

# 为 Amazon ECS 资源添加标签
<a name="ecs-using-tags"></a>

为了帮助您管理 Amazon ECS 资源，您可以选择使用*标签*将自己的元数据分配给任何基于 ARN 的资源。每个*标签*都由一个*键*和一个可选*值*组成。

您可以使用标签按照不同方式（例如按用途、所有者或环境）对 Amazon ECS 资源进行分类。这在您有许多相同类型的资源时会非常有用。您可以根据分配到特定资源的标签来快速识别该资源。例如，您可以为您账户的 Amazon ECS 实例定义一组标签。这有助于您跟踪每个实例的所有者和堆栈级别。

您可以将标签用于成本和使用情况报告。您可以使用这些报告来分析 Amazon ECS 资源的成本和使用情况。有关更多信息，请参阅 [Amazon ECS 使用率报告](usage-reports.md)。

**警告**  
许多 API 会返回标签密钥及其值。拒绝访问 `DescribeTags` 不会自动拒绝访问其他 API 返回的标签。作为最佳实践，我们建议您不要在标签中包含敏感数据。

我们建议您针对每类资源设计一组标签，以满足您的需要。您可以使用一组一致的标签键来更轻松地管理您的资源。您可以根据添加的标签搜索和筛选资源。

标签对 Amazon ECS 没有任何语义意义，应严格按字符串进行解析。您可以修改标签的密钥和值，还可以随时删除资源的标签。您可以将标签的值设为空的字符串，但是不能将其设为空值。如果您添加的标签的键与该资源上现有标签的键相同，则新值会覆盖旧值。删除资源时，资源的所有标签也会被删除。

如果您使用的是 AWS Identity and Access Management（IAM），则可以控制您的AWS账户中的哪些用户拥有管理标签的权限。

## 如何为资源添加标签
<a name="tag-resources"></a>

有多种方式可以为 Amazon ECS 任务、服务、任务定义和集群添加标签：
+ 用户使用 AWS 管理控制台、Amazon ECS API、AWS CLI 或 AWS SDK 为资源手动添加标签。
+ 用户创建服务或运行独立任务，然后选择 Amazon ECS 托管标签选项。

  Amazon ECS 会自动为所有新启动的任务添加标签。有关更多信息，请参阅 [Amazon ECS 托管标签](#managed-tags)。
+ 用户使用控制台创建资源。控制台会自动为资源添加标签。

  这些标签在 AWS CLI 和 AWS SDK 响应中返回，并显示在控制台中。您无法修改或删除这些标签。

  有关添加的标签的信息，请参阅 **Amazon ECS 资源标签支持**表中的**控制台自动添加的标签**列。

如果您在创建资源时指定了标签但无法应用标签，Amazon ECS 会回滚创建过程。这样可确保要么创建带有标签的资源，要么根本不创建资源，即任何时候都不会创建出未标记的资源。通过在创建资源时对其进行标记，无需在创建资源后运行自定义标记脚本。

下表描述了支持标签的 Amazon ECS 资源。


|  资源  |  支持标签  |  支持标签传播  | 控制台自动添加的标签 | 
| --- | --- | --- | --- | 
|  Amazon ECS 任务  |  是  |  是，从任务定义。  | 键：aws:ecs:clusterName*值*：`cluster-name` | 
|  Amazon ECS 服务  |  是  |  是，从任务定义或服务到服务中的任务。  | 键：ecs:service:stackId*值* `arn:aws:cloudformation:arn` | 
|  Amazon ECS 任务集  |  是  |  否  | 不适用 | 
|  Amazon ECS 任务定义  |  是  |  否  | 键：ecs:taskDefinition:createdFrom*值*：`ecs-console-v2` | 
|  Amazon ECS 集群  |  是  |  否  | 键：aws:cloudformation:logical-id*值*：`ECSCluster` 键：aws:cloudformation:stack-id*值*：`arn:aws:cloudformation:arn`*键*：`aws:cloudformation:stack-name`*值*：`ECS-Console-V2-Cluster-EXAMPLE` | 
|  Amazon ECS 容器实例。  |  是  |  是，从 Amazon EC2 实例。有关更多信息，请参阅 [向 Amazon ECS 的 Amazon EC2 容器实例添加标签](instance-details-tags.md)。  | 不适用 | 
|  Amazon ECS 外部实例  |  是  |  否  | 不适用 | 
| Amazon ECS 容量提供程序 |  可以。您不能为预定义的 `FARGATE` 和 `FARGATE_SPOT` 容量提供程序添加标签。 | 是的，仅来自 Amazon ECS 托管实例的容量提供程序。您可以将标签从 Amazon ECS 托管实例的容量提供程序传播到该提供程序管理的所有资源，例如 Amazon EC2 实例、启动模板、弹性网络接口和卷。 | 不适用 | 

## 在创建时标记资源
<a name="tags-on-creation"></a>

以下资源支持在创建时使用 Amazon ECS API、AWS CLI 或 AWS SDK 进行标记：
+ Amazon ECS 任务
+ Amazon ECS 服务
+ Amazon ECS 任务定义
+ Amazon ECS 任务集
+ Amazon ECS 集群
+ Amazon ECS 容器实例。
+ Amazon ECS 容量提供程序

Amazon ECS 可以选择使用标记授权来创建资源。配置 AWS 账户 进行标记授权时，用户必须对创建资源的操作具有权限，例如 `ecsCreateCluster`。在资源创建操作中指定标签时，AWS 会执行额外的授权，以验证用户或角色是否具备创建标签的权限。因此，您必须授予使用 `ecs:TagResource` 操作的显式权限。有关更多信息，请参阅 [在创建时授予标记资源的权限](supported-iam-actions-tagging.md)。有关如何配置选项的信息，请参阅[标记授权](ecs-account-settings.md#tag-resources-setting)。

## 限制
<a name="tag-restrictions"></a>

以下限制适用于标签：
+ 一个资源最多可以关联 50 个标签。
+ 不能对一个资源重复使用标签键。每个标签键必须具有唯一性，而且只能有一个值。
+ 键最长可达 128 个字符（采用 UTF-8 格式）。
+ 值最长可达 256 个字符（采用 UTF-8 格式）。
+ 如果有多个 AWS 服务 和资源使用您的标记方案，请限制您使用的字符类型。某些服务可能对允许使用的字符有限制。通常允许使用的字符包括字母、数字、空格以及以下字符：`+` `-` `=` `.` `_` `:` `/` `@`。
+ 标签键和值区分大小写。
+ 不能使用 `aws:`、`AWS:` 或它们的任何大写或小写组合作为键或值的前缀。它们保留供 AWS 使用。无法编辑或删除带此前缀的标签键或值。具有此前缀的标签不计入每个资源的标签数限制。

## Amazon ECS 托管标签
<a name="managed-tags"></a>

当您使用 Amazon ECS 托管标签时，Amazon ECS 会自动使用集群信息和用户添加的任务定义标签或服务标签来标记所有新启动的任务和附加到任务的任何 Amazon EBS 卷。下面介绍了添加的标签：
+ 独立任务 – *键*为 `aws:ecs:clusterName` 且*值*设置为集群名称的标签。用户添加的所有任务定义标签。附加到独立任务的 Amazon EBS 卷将收到带有*密钥*为 `aws:ecs:clusterName`、*值*设置为集群名称的标签。有关 Amazon EBS 卷标记的更多信息，请参阅[标记 Amazon EBS 卷](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging)。
+ 服务所包含的任务 – *键*为 `aws:ecs:clusterName` 且*值*设置为集群名称的标签。*键*为 `aws:ecs:serviceName` 且*值*设置为服务名称的标签。来自以下资源之一的标签：
  + 任务定义 – 用户添加的所有任务定义标签。
  + 服务 – 用户添加的所有服务标签。

    附加到作为服务一部分的任务的 Amazon EBS 卷将收到一个*键*为 `aws:ecs:clusterName`、*值*设置为集群名称的标签，以及一个*键*为 `aws:ecs:serviceName`、*值*设置为服务名称的标签。有关 Amazon EBS 卷标记的更多信息，请参阅[标记 Amazon EBS 卷](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging)。

此功能需要以下选项：
+ 您必须选择使用新的 Amazon 资源名称（ARN）和资源标识符（ID）格式。有关更多信息，请参阅 [Amazon 资源名称（ARN）和 ID](ecs-account-settings.md#ecs-resource-ids)。
+ 当您使用 API 创建服务或运行任务时，您必须将 `run-task` 和 `create-service` 的 `enableECSManagedTags` 设置为 `true`。有关更多信息，请参阅 *AWS Command Line Interface API 参考*中的 [create-service](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) 和 [run-task](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)。
+ Amazon ECS 使用托管标签来确定何时启用某些功能，例如集群自动扩缩。建议您不要手动修改标签，以便 Amazon ECS 可以有效地管理这些功能。

## 使用标签记账
<a name="tag-resources-for-billing"></a>

AWS 提供了名为 Cost Explorer 的报告工具，您可以使用它来分析 Amazon ECS 资源的成本和用量。

您可以使用 Cost Explorer 查看用量和成本的图表。您可以查看过去 13 个月的数据，并预测您在接下来三个月内可能产生的费用。您可以使用 Cost Explorer 查看您在 AWS 资源上花费的时间模式。如，您可以使用它来确定需要进一步查询的方面，并查看可用于了解成本的趋势。您还可以指定数据的时间范围，并按天或按月查看时间数据。

您可以为成本和使用情况报告使用 Amazon ECS 托管标签或用户添加的标签。有关更多信息，请参阅 [Amazon ECS 使用率报告](usage-reports.md)。

如需查看组合资源的成本，请按具有相同标签键值的资源组织您的账单信息。例如，您可以将特定的应用程序名称用作几个资源的标签，然后组织账单信息，以查看在数个服务中的使用该应用程序的总成本。有关设置带有标签的成本分配报告的更多信息，请参阅 *AWS Billing 用户指南*中的[月度成本分配报告](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html)。

此外，您可以启用*拆分成本分配数据*，以获取成本和使用量报告中的任务级 CPU 和内存使用情况数据。有关更多信息，请参阅 [任务级成本和使用量报告](usage-reports.md#task-cur)。

**注意**  
如果已启用报告，则最多需要 24 小时才能后查看当月的数据。

# 向 Amazon ECS 资源添加标签
<a name="tag-resources-console"></a>

您可以标记新的或现有的任务、服务、任务定义或集群。有关标记容器实例的信息，请参阅 [向 Amazon ECS 的 Amazon EC2 容器实例添加标签](instance-details-tags.md)。

**警告**  
请勿在标签中添加个人身份信息（PII）或其他机密或敏感信息。标签可供许多 AWS 服务访问，包括计费。标签不适合用于私有或敏感数据。

在创建资源时，您可以使用以下资源指定标签。


|  Task  |  控制台  |  AWS CLI  |  API 操作  | 
| --- | --- | --- | --- | 
|  运行一个或多个任务。  |  [将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)  |  [run-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)  |  [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)  | 
|  创建服务。  |  [创建 Amazon ECS 滚动更新部署](create-service-console-v2.md)  |  [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)  |  [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)  | 
|  创建任务集。  |  [使用第三方控制器部署 Amazon ECS 服务](deployment-type-external.md)  |  [create-task-set](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-task-set.html)  |  [CreateTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html)  | 
|  注册任务定义。  | [使用控制台创建 Amazon ECS 任务定义](create-task-definition.md) |  [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)  |  [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)  | 
|  创建集群。  |  [为 Fargate 工作负载创建 Amazon ECS 集群](create-cluster-console-v2.md)   |  [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-cluster.html)  |  [CreateCluster](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCluster.html)  | 
|  运行一个或多个容器实例。  |  [启动 Amazon ECS Linux 容器实例](launch_container_instance.md)  |  [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)  |  [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)  | 
|  为 Amazon ECS 托管实例创建容量提供程序。  |  [为 Amazon ECS 托管实例创建容量提供程序](create-capacity-provider-managed-instances.md)  |  [create-capacity-provider](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-capacity-provider.html)  |  [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html)  | 

## 为现有资源添加标签（Amazon ECS 控制台）
<a name="adding-or-deleting-tags"></a>

您可以直接从资源的页面中添加或删除与集群、服务、任务和任务定义相关的标签。

**为单个资源修改标签**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 从导航栏中，选择要使用的AWS 区域。

1. 在导航窗格中，选择资源类型（例如，**集群**）。

1. 从资源列表中选择资源，选择**标签**选项卡，然后选择**管理标签**。

1. 配置您的标签。

   [添加标签] 选择 **Add tag**（添加标签），然后执行以下操作：
   + 对于 **Key（键）**，输入键名称。
   + 对于**值**，输入键值。

1. 选择**保存**。

## 向现有资源添加标签（AWS CLI）
<a name="tag-resources-api-sdk"></a>

您可以使用 AWS CLI 或 API 添加或覆盖一个或多个标签。

**注意**  
您可以使用双堆栈服务端点通过 IPv4 和 IPv6 从 AWS CLI、SDK 和 Amazon ECS API 与 Amazon ECS 进行交互。有关更多信息，请参阅 [使用 Amazon ECS 双堆栈端点](dual-stack-endpoint.md)。
+ AWS CLI：[tag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecs/tag-resource.html)
+ API 操作：[TagResource](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html)

# Amazon ECS 托管实例的标签
<a name="instance-details-tags-managed-instances"></a>

Amazon ECS 托管实例支持自定义标签和 AWS 添加的标签的组合，可用于成本优化。有关使用标签进行计费的更多信息，请参阅[使用标签记账](ecs-using-tags.md#tag-resources-for-billing)。

## 由 AWS 添加的标签
<a name="instance-details-tags-managed-instances-system"></a>

 AWS 会向容量提供程序创建的每个 Amazon ECS 托管实例添加以下标签：
+ Amazon ECS 会自动将保留标签 `AmazonECSCreated` 和 `AmazonECSManaged` 添加到 Amazon ECS 托管实例。
+ Amazon ECS 会将以下系统标签添加到每个实例：
  + *键*为 `aws:ecs:clusterName` 且*值*设置为集群名称的标签。
  + *键*为 `aws:ecs:capacityProviderName` 且*值*设置为容量提供程序名称的标签。
  + *键*为 `aws:ecs:containerInstanceId` 且*值*为 Amazon ECS 托管实例的容器实例 ID 的标签。
+ Amazon EC2 会添加值为 `ecs-managed-instances` 的系统标签 `aws:ec2:managed-launch`。此外，Amazon EC2 还会添加系统标签，表示用于创建托管实例的启动模板以及托管实例所属的 Amazon EC2 实例集。

## 自定义标签
<a name="instance-details-tags-managed-instances-custom"></a>

您可以通过向容量提供程序添加标签并使用 `propagateTags` 属性启用标签传播，向 Amazon ECS 托管实例添加其他自定义标签。容量提供程序上的标签会传播到容量提供程序启动的托管实例

以下示例容量提供程序定义显示了在使用 `propagateTags` 的 `CAPACITY_PROVIDER` 值创建容量提供程序时，如何指定标签并从容量提供程序传播标签。

```
{
    "name": "my-cluster-managed-instances-cp",
    "cluster": "my-cluster",
     "tags": [
                {
                "key":"tag_key",
                "value":"tag_value"
                }
            ],
    "managedInstancesProvider": {
        "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole",
        "propagateTags": "CAPACITY_PROVIDER",
        "instanceLaunchTemplate": {
            "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile",
            "networkConfiguration": {
                "subnets": [
                    "subnet-abcdef01234567",
                    "subnet-bcdefa98765432"
                ],
                "securityGroups": [ 
                    "sg-0123456789abcdef"
                ]
            }
        }
    }
}
```

**注意**  
当您向容量提供程序添加新标签时，新添加的标签不会传播到现有实例，但会传播到任何新创建的实例。
允许客户直接向 EC2 实例添加标签，但这些标签不会传播回容量提供程序
您也可以使用 [向现有资源添加标签（AWS CLI）](tag-resources-console.md#tag-resources-api-sdk) 或 [为现有资源添加标签（Amazon ECS 控制台）](tag-resources-console.md#adding-or-deleting-tags) 标记或取消标记容量提供程序

有关 Amazon ECS 托管实例容量提供程序的更多信息，请参阅 [Amazon ECS 托管实例容量提供程序](managed-instances-capacity-providers-concept.md)。

# 向 Amazon ECS 的 Amazon EC2 容器实例添加标签
<a name="instance-details-tags"></a>

您可以使用以下方法之一将标签与 Amazon ECS 的 Amazon EC2 容器实例关联：
+ 方法 1：在使用 Amazon EC2 API、CLI 或控制台创建容器实例时，通过使用容器代理配置参数 `ECS_CONTAINER_INSTANCE_TAGS` 将用户数据传递到实例来指定标签。这只创建与 Amazon ECS 中的容器实例关联的标签，而无法使用 Amazon EC2 API 列出这些标签。有关更多信息，请参阅 [引导启动 Amazon ECS Linux 容器实例以传递数据](bootstrap_container_instance.md)。
**重要**  
如果使用 Amazon EC2 Auto Scaling 组启动容器实例，则应使用 ECS\$1CONTAINER\$1INSTANCE\$1TAGS 配置参数添加标签。这是由标签添加到使用 自动扩缩组启动的 Amazon EC2 实例的方式造成的。

  下面是将标签与您的容器实例关联的用户数据脚本示例：

  ```
  #!/bin/bash
  cat <<'EOF' >> /etc/ecs/ecs.config
  ECS_CLUSTER=MyCluster
  ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
  EOF
  ```
+ 方法 2 – 当您使用 Amazon EC2 API、CLI 或控制台创建容器实例时，请首先使用 `TagSpecification.N` 参数指定标签。然后，使用容器代理配置参数 `ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM` 将用户数据传递给实例。这样做会将它们从 Amazon EC2 传播到 Amazon ECS。

  下面是一个用户数据脚本示例，该脚本将传播与 Amazon EC2 实例关联的标签，以及向名为 `MyCluster` 的集群注册实例。

  ```
  #!/bin/bash
  cat <<'EOF' >> /etc/ecs/ecs.config
  ECS_CLUSTER=MyCluster
  ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance
  EOF
  ```

  要提供访问权限以允许容器实例标签从 Amazon EC2 传播到 Amazon ECS，请手动将以下权限作为内链策略添加到 Amazon ECS 容器实例 IAM 角色。有关更多信息，请参阅[添加和删除 IAM 策略。](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
  + `ec2:DescribeTags`

  以下是用于添加这些权限的示例策略。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
              	"ec2:DescribeTags"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

# 向 Amazon ECS 的外部容器实例添加标签
<a name="instance-details-tags-external"></a>

您可以使用以下方法之一将标签与 Amazon ECS 的外部容器实例关联起来。
+ 方法 1–在运行安装脚本向集群注册外部实例之前，请在 `/etc/ecs/ecs.config` 处创建或编辑 Amazon ECS 容器代理配置文件，并添加 `ECS_CONTAINER_INSTANCE_TAGS` 容器代理配置参数。这将创建与外部实例关联的标签。

  以下是示例语法。

  ```
  ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
  ```
+ 方法 2 – 将外部实例注册到集群后，您可以使用 AWS 管理控制台 添加标签。有关更多信息，请参阅 [为现有资源添加标签（Amazon ECS 控制台）](tag-resources-console.md#adding-or-deleting-tags)。

# Amazon ECS 使用率报告
<a name="usage-reports"></a>

AWS 提供了名为 Cost Explorer 的报告工具，您可以使用它来分析 Amazon ECS 资源的成本和用量。

您可以使用 Cost Explorer 查看用量和成本的图表。您可以查看过去 13 个月的数据，并预测您在接下来三个月内可能产生的费用。您可以使用 Cost Explorer 查看您在 AWS 资源上花费的时间模式。如，您可以使用它来确定需要进一步查询的方面，并查看可用于了解成本的趋势。您还可以指定数据的时间范围，并按天或按月查看时间数据。

成本和使用情况报告中的计量数据显示了所有 Amazon ECS 任务的使用情况。计量数据包括运行的每个任务的 CPU 用量（用 `vCPU-Hours` 表示）和内存用量（用 `GB-Hours` 表示）。数据的呈现方式取决于任务的计算选项。

对于使用 Fargate 的任务，`lineItem/Operation` 列显示 `FargateTask`，并且您将看到与每个任务关联的成本。

对于使用 EC2 的任务，`lineItem/Operation` 列显示 `ECSTask-EC2`，并且任务没有关联的直接成本。报告中显示的计量数据（例如内存使用情况）表示任务在您指定的计费周期内保留的总资源。您可以使用此数据来确定 Amazon EC2 实例的基础集群的成本。您的 Amazon EC2 实例的成本和用量数据将在 Amazon EC2 服务下单独列出。

您还可以使用 Amazon ECS 托管标签来标识每个任务所属的服务或集群。有关更多信息，请参阅 [使用标签记账](ecs-using-tags.md#tag-resources-for-billing)。

**重要**  
只能查看在 2018 年 11 月 16 日或之后启动的任务的计量数据。此日期之前启动的任务不显示计量数据。

下面是可用于在 Cost Explorer 中对成本分配数据进行排序的一些字段的示例。
+ 集群名称
+ 服务名称
+ 资源标签
+ 启动类型
+ AWS 区域
+ 使用情况类型

有关创建 AWS 成本和用量报告的更多信息，请参阅 *AWS Billing 用户指南*中的[AWS成本和用量报告](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-reports-costusage.html)。

## 任务级成本和使用量报告
<a name="task-cur"></a>

AWS Cost Management 可以在 AWS 成本和使用情况报告 中为 Amazon ECS 上的每项任务（包括 Fargate 上的任务和 EC2 上的任务）提供 CPU 和内存使用量数据。此数据称为*拆分成本分配数据*。您可以使用这些数据来分析应用程序的成本和使用量。此外，您还可以使用成本分配标签和成本类别将成本拆分并分配给各个业务部门和团队。有关*拆分成本分配数据*的更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的[了解拆分成本分配数据](https://docs.aws.amazon.com/cur/latest/userguide/split-cost-allocation-data.html)。

您可以在 AWS Cost Management Console 中为账户选择任务级*拆分成本分配数据*。如果您有管理（付款人）账户，则可以选择加入付款人账户，以将此配置应用于每个关联账户。

设置*拆分成本分配数据*后，报告中的 **splitLineItem** 标题下将有其他的列。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的[拆分行项目详细信息](https://docs.aws.amazon.com/cur/latest/userguide/split-line-item-columns.html)

对于 EC2 上的任务，此数据根据资源使用量或预留量和实例上的剩余资源来分配 EC2 实例的成本。

以下是先决条件：
+ 将 `ECS_DISABLE_METRICS` Amazon ECS 代理配置参数设置为 `false`。

  此设置为 `false` 时，Amazon ECS 代理将指标发送到 Amazon CloudWatch。在 Linux 上，此设置默认为 `false`，且指标将发送到 CloudWatch。在 Windows 上，此设置默认为 `true`，因此您必须将设置更改为 `false` 才能将指标发送到 CloudWatch 以供 AWS Cost Management 使用。有关 ECS 代理配置的更多信息，请参阅 [Amazon ECS 容器代理配置](ecs-agent-config.md)。
+ 可靠指标的最低 Docker 版本是 Docker 版本 v20.10.13 及更高版本，该版本包含在经 Amazon ECS 优化的 AMI 20220607 及更高版本中。

要使用*拆分成本分配数据*，您必须创建报告，然后选择**拆分成本分配数据**。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的[创建成本和使用量报告](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html)。

AWS Cost Management 使用任务 CPU 和内存使用量计算*拆分成本分配数据*。如果使用量不可用，则 AWS Cost Management 可以使用任务 CPU 和内存预留来代替使用量。如果您看到 CUR 正在使用预留，请检查您的容器实例是否满足先决条件以及任务资源使用量指标是否显示在 CloudWatch 中。