为您的 Amazon ECS 资源添加标签 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为您的 Amazon ECS 资源添加标签

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

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

您可以将标签用于成本和使用情况报告。您可以使用这些报告来分析 Amazon ECS 资源的成本和使用情况。有关更多信息,请参阅Amazon ECS 使用率报告

警告

很多不同的 API 调用返回标签键及其值。拒绝访问 DescribeTags 不会自动拒绝访问其他 API 返回的标签。作为最佳实践,我们建议您不要在标签中包含敏感数据。

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

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

如果您使用的是 Amazon Identity and Access Management(IAM),则可以控制您的Amazon账户中的哪些用户拥有管理标签的权限。

如何为资源添加标签

有多种方式可以为 Amazon ECS 任务、服务、任务定义和集群添加标签:

  • 用户使用 Amazon Web Services Management Console、Amazon ECS API、Amazon CLI 或 Amazon SDK 为资源手动添加标签。

  • 用户创建服务或运行独立任务,然后选择 Amazon ECS 托管标签选项。

    Amazon ECS 会自动为所有新启动的任务添加标签。有关更多信息,请参阅Amazon ECS 托管标签

  • 用户使用控制台创建资源。控制台会自动为资源添加标签。

    这些标签在Amazon CLI,以及AmazonSDK 响应和显示在控制台中。您无法修改或删除这些标签。

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

如果您在创建资源时指定了标签但无法应用标签,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 EC2 容器实例添加标签

不适用

Amazon ECS 外部实例

不适用
Amazon ECS 容量提供程序 可以。

您不能为预定义的 FARGATEFARGATE_SPOT 容量提供程序添加标签。

不适用

在创建时标记资源

以下资源支持使用 Amazon ECS API 在创建时进行标记,Amazon CLI,AmazonSDK:

  • Amazon ECS 任务

  • Amazon ECS 服务

  • Amazon ECS 任务定义

  • Amazon ECS 任务集

  • Amazon ECS 集群

  • Amazon ECS 容器实例。

  • Amazon ECS 容量提供程序

Amazon ECS 可以选择使用标记授权来创建资源。要使用该功能,请执行以下步骤:

  • 您必须选择使用该功能。有关更多信息,请参阅标记授权

  • 选择加入后,用户必须拥有创建资源的操作权限,例如ecsCreateCluster。如果在资源创建操作中指定了标签,Amazon执行额外授权以验证用户或角色是否具有创建标签的权限。因此,必须授予明确的权限才能使用ecs:TagResource行动。有关更多信息,请参阅授予在创建资源时标记资源的权限

标签限制

以下限制适用于标签:

  • 一个资源最多可以关联 50 个标签。

  • 不能对一个资源重复使用标签键。每个标签键必须具有唯一性,而且只能有一个值。

  • 键最长可达 128 个字符(采用 UTF-8 格式)。

  • 值最长可达 256 个字符(采用 UTF-8 格式)。

  • 如果有多个 Amazon Web Services 和资源使用您的标记方案,请限制您使用的字符类型。某些服务可能对允许使用的字符有限制。通常允许使用的字符包括字母、数字、空格以及以下字符:+ - = . _ : / @

  • 标签键和值区分大小写。

  • 不能使用 aws:AWS: 或它们的任何大写或小写组合作为键或值的前缀。它们保留供 Amazon 使用。您无法编辑或删除带此前缀的标签键或值。带有此前缀的标签不对您不利tags-per-resource限制。

Amazon ECS 托管标签

当您使用 Amazon ECS 托管标签时,Amazon ECS 会自动使用集群信息和用户添加的任务定义标签或服务标签来标记所有新启动的任务。下面介绍了添加的标签:

  • 独立任务 – aws:ecs:clusterName设置为集群名称的标签。用户添加的所有任务定义标签。

  • 服务所包含的任务 – aws:ecs:clusterName设置为集群名称的标签。aws:ecs:serviceName设置为服务名称的标签。来自以下资源之一的标签:

    • 任务定义 – 用户添加的所有任务定义标签。

    • 服务 – 用户添加的所有服务标签。

此功能需要以下选项:

  • 您必须选择使用新的 Amazon 资源名称 (ARN) 和资源标识符 (ID) 格式。有关更多信息,请参阅Amazon Resource Names (ARN) 和 ID

  • 当您使用 API 创建服务或运行任务时,您必须将 run-taskcreate-serviceenableECSManagedTags 设置为 true。有关更多信息,请参阅 Amazon Command Line Interface API 参考中的 create-servicerun-task

标记资源以便于计费

您可以为成本和使用情况报告使用 Amazon ECS 托管标签或用户添加的标签。有关更多信息,请参阅Amazon ECS 使用率报告

如需查看组合资源的成本,请按具有相同标签键值的资源组织您的账单信息。例如,您可以将特定的应用程序名称用作几个资源的标签,然后组织账单信息,以查看在数个服务中的使用该应用程序的总成本。有关设置带有标签的成本分配报告的更多信息,请参阅 Amazon Billing 用户指南中的月度成本分配报告

此外,你可以开启拆分成本分配数据在 “成本和使用率报告” 中获取任务级 CPU 和内存使用率数据。有关更多信息,请参阅任务级成本和使用情况报告

注意

如果您已开启报告,则最多可能需要 24 小时才能查看当月的数据。

通过控制台使用标签

使用 Amazon ECS 控制台,您可以管理与新的或现有任务、服务、任务定义、集群或容器实例关联的标签。

当您在 Amazon ECS 控制台中选择特定资源页面时,它会显示这些资源的列表。例如,如果您从导航窗格中选择 Clusters (集群),则控制台会显示 Amazon ECS 集群列表。当您从其中一个列表中选择一种支持标签的资源(例如,特定集群)时,您可以在标签选项卡上查看和管理其标签。

警告

作为最佳实践,我们建议您不要在标签中包含敏感数据。

在启动过程中为单个资源添加标签

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

任务

控制台

运行一个或多个任务。

使用 Amazon ECS 控制台运行独立任务

创建服务。

使用控制台创建服务

创建任务集。

外部部署

注册任务定义。

使用控制台创建任务定义

创建集群。

使用控制台为 Fargate 和外部启动类型创建集群

运行一个或多个容器实例。

启动 Amazon ECS Linux 容器实例

使用控制台管理单个资源标签

Amazon ECS 允许您直接从资源的页面中添加或删除与集群、服务、任务和任务定义关联的标签。有关标记容器实例的信息,请参阅向 Amazon EC2 容器实例添加标签

警告

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

为单个资源修改标签
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 从导航栏中,选择要使用的 Amazon Web Services 区域。

  3. 在导航窗格中,选择资源类型(例如,Clusters (集群))。

  4. 从资源列表中选择资源,选择 Tags(标签)选项卡,然后选择 Manage tags(管理标签)。

  5. 配置您的标签。

    [添加标签] 选择 Add tag(添加标签),然后执行以下操作:

    • 对于 Key(键),输入键名称。

    • 对于 Value(值),输入键值。

    [删除标签] 选择标签的“键”和“值”右侧的Remove(删除)。

  6. 选择保存

向 Amazon EC2 容器实例添加标签

您可以使用以下方法之一将标签与您的容器实例相关联:

  • 方法 1 - 在使用 Amazon EC2 API、CLI 或控制台创建容器实例时,通过使用容器代理配置参数 ECS_CONTAINER_INSTANCE_TAGS 将用户数据传递到实例来指定标签。这只创建与 Amazon ECS 中的容器实例关联的标签,而无法使用 Amazon EC2 API 列出这些标签。有关更多信息,请参阅使用 Amazon EC2 用户数据引导启动容器实例

    重要

    如果使用 Amazon EC2 Auto Scaling 组启动容器实例,则应使用 ECS_CONTAINER_INSTANCE_TAGS 配置参数添加标签。这是由标签添加到使用 自动扩缩组启动的 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 policy

    • ec2:DescribeTags

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

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

向外部容器实例添加标签

您可以使用以下方法之一将标签与您的外部容器实例相关联。

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

    以下是示例语法。

    ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
  • 方法 2 – 将外部实例注册到集群后,您可以使用 Amazon Web Services Management Console 添加标签。有关更多信息,请参阅使用控制台管理单个资源标签

通过 CLI 或 API 使用标签

使用以下命令添加、更新、列出和删除资源标签。相应文档提供了示例。

警告

请勿在标签中添加个人身份信息 (PII) 或者其他机密或敏感信息。标签可供许多 Amazon Web Services 访问,包括计费。标签不适合用于私有或敏感数据。

Amazon ECS 资源标记支持

任务

Amazon CLI

API 操作

添加或覆盖一个或多个标签。

tag-resource

TagResource

删除一个或多个标签。

untag-resource

UntagResource

在创建资源时,您可以使用一些资源创建操作来指定标签。以下操作支持在创建时进行标记。

你必须有ecsTagResource许可。有关更多信息,请参阅授予在创建资源时标记资源的权限

任务

Amazon CLI

Amazon Tools for Windows PowerShell

API 操作

运行一个或多个任务。

run-task

Start-ECSTask

RunTask

创建服务。

create-service

New-ECSService

CreateService

创建任务集。

create-task-set

新ECSTaskSet

CreateTaskSet

注册任务定义。

register-task-definition

注册-ECSTaskDefinition

RegisterTaskDefinition

创建集群。

create-cluster

New-ECSCluster

CreateCluster

运行一个或多个容器实例。

run-instances

New-EC2Instance

RunInstances