为 Auto Scaling 组和实例添加标签 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Auto Scaling 组和实例添加标签

标签是您分配的自定义属性标签,或者是 Amazon 分配给 Amazon 资源的标签。每个标签具有两个部分:

  • 标签键(例如,costcenterenvironmentproject

  • 一个称为标签值的可选字段(例如,111122223333production

标签可帮助您:

  • 跟踪您的 Amazon 成本。您可以在 Amazon Billing and Cost Management 控制面板上激活这些标签。Amazon 使用标签对您的成本进行分类,并向您提供每月成本分配报告。有关更多信息,请参阅 Amazon Billing 用户指南中的使用成本分配标签

  • 根据标签控制对 Auto Scaling 组的访问。您可以使用 IAM policy 中的条件根据该组上的标签控制对自动扩缩组的访问。有关更多信息,请参阅安全性标签

  • 根据您添加的标签筛选和搜索自动扩缩组。有关更多信息,请参阅使用标签筛选 Auto Scaling 组

  • 标识和整理您的 Amazon 资源。许多 Amazon Web Services都支持添加标签,因此,您可以将同一标签分配给来自不同服务的资源,以表明这些资源相互之间存在关系。

您可以标记新的或现有 Auto Scaling 组。您还可以将来自某个自动扩缩组的标签传播到该组启动的 EC2 实例。

标签不会传播到 Amazon EBS 卷。要向 Amazon EBS 卷添加标签,请在启动模板中指定标签。有关更多信息,请参阅 为 Auto Scaling 组创建启动模板

您可以通过 Amazon Web Services Management Console、Amazon CLI 或 SDK 创建并管理标签。

标签命名和使用限制

下面是适用于标签的基本限制:

  • 每个资源的最大标签数是 50。

  • 可以使用单个调用添加或删除的标签的最大数目为 25。

  • 最大键长度为 128 个 Unicode 字符。

  • 最大值长度为 256 个 Unicode 字符。

  • 标签键和值区分大小写。最佳实践是,决定利用标签的策略并在所有资源类型中一致地实施该策略。

  • 请勿在标签名称或值中使用 aws: 前缀,因为它专为 Amazon 使用预留。您不能编辑或删除具有此前缀的标签名称或值,它们不计入每个资源配额的标签数限制。

EC2 实例标签生命周期

如果您选择将标签传播到 EC2 实例,则将按以下方式管理标签:

  • 当 Auto Scaling 组启动实例时,它会在资源创建期间向实例添加标记,而不是在创建资源之后。

  • Auto Scaling 组会自动向实例添加带有 aws:autoscaling:groupName 键和 Auto Scaling 组名称值的标签。

  • 如果您在启动模板中指定了实例标签,并且选择将组的标签传播到其实例,则所有标签都会合并。如果为启动模板中的标签和 Auto Scaling 组中的标签指定了相同的标签键,则优先使用该组中的标签值。

  • 您在附加现有实例时,Auto Scaling 组就会向这些实例添加标签,覆盖具有相同标签关键字的现有标签。它还添加键为 aws:autoscaling:groupName、值为 Auto Scaling 组名称的标签。

  • 将实例从 Auto Scaling 组中分离时,它仅删除 aws:autoscaling:groupName 标签。

标记 Auto Scaling 组

当您向 Auto Scaling 组添加标签时,可以指定是否应将其添加到 Auto Scaling 组中启动的实例。如果修改标签,在更改后,标签的更新版本将添加到在 Auto Scaling 组中启动的实例。如果创建或修改 Auto Scaling 组的标签,不会对已经在 Auto Scaling 组中运行的实例进行这些更改。

添加或修改标签(控制台)

创建时标记 Auto Scaling 组

当您使用 Amazon EC2 控制台创建 Auto Scaling 组时,您可以在“创建 Auto Scaling 组”向导的添加标签页面上指定标签键和值。要将标签传播到在 Auto Scaling 组中启动的实例,请确保该标签的 Tag new instances(标记新实例)选项保持选中状态。否则,您可以取消选择它。

添加或修改现有 Auto Scaling 组的标签

  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选中 Auto Scaling 组旁边的复选框。

    这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。

  3. Details(详细信息)选项卡上,选择 Tags(标签)、Edit(编辑)。

  4. 要修改现有标签,请编辑 Key(键)和 Value(值)。

  5. 要添加新标签,请选择 Add tag(添加标签),然后编辑 Key(键)和 Value(值)。您可以使标记新实例保持选中状态,以便自动将标签添加到在 Auto Scaling 组启动的实例,否则取消选中它。

  6. 添加完标签后,选择 Update(更新)。

添加或修改标签 (Amazon CLI)

以下示例说明如何使用 Amazon CLI 在您创建 Auto Scaling 组时添加标签,以及添加或修改现有 Auto Scaling 组的标签。

创建时标记 Auto Scaling 组

使用 create-auto-scaling-group 命令创建新的 Auto Scaling 组并将标签(例如 environment=production)添加到 Auto Scaling 组。该标签还会添加到在 Auto Scaling 组中启动的任何实例。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config --min-size 1 --max-size 3 \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --tags Key=environment,Value=production,PropagateAtLaunch=true

创建或修改现有 Auto Scaling 组的标签

使用 create-or-update-tags 命令创建或修改标签。例如,以下命令将添加 Name=my-asgcostcenter=cc123 标签。在进行该更改后,该标签还会添加到在 Auto Scaling 组中启动的任何实例。如果具有任一键的标签已经存在,则会替换现有标签。Amazon EC2 控制台将每个实例的显示名称与为 Name 键指定的名称(区分大小写)关联。

aws autoscaling create-or-update-tags \ --tags ResourceId=my-asg,ResourceType=auto-scaling-group,Key=Name,Value=my-asg,PropagateAtLaunch=true \ ResourceId=my-asg,ResourceType=auto-scaling-group,Key=costcenter,Value=cc123,PropagateAtLaunch=true

描述 Auto Scaling 组的标签 (Amazon CLI)

如果您要查看应用于特定的 Auto Scaling 组的标签,可以使用以下任一命令:

  • describe-tags — 提供 Auto Scaling 组的名称,以查看指定组的标签列表。

    aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=my-asg

    以下为响应示例。

    { "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ] }
  • describe-auto-scaling-groups — 提供 Auto Scaling 组名称以查看指定组的属性,包括任何标签。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下为响应示例。

    { "AutoScalingGroups": [ { "AutoScalingGroupARN": "arn", "HealthCheckGracePeriod": 0, "SuspendedProcesses": [], "DesiredCapacity": 1, "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], "EnabledMetrics": [], "LoadBalancerNames": [], "AutoScalingGroupName": "my-asg", ... } ] }

删除标签

您可以随时删除与 Auto Scaling 组关联的标签。

删除标签(控制台)

删除标签

  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选中现有组旁边的复选框。

    这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。

  3. Details(详细信息)选项卡上,选择 Tags(标签)、Edit(编辑)。

  4. 选择标签旁边的 Remove(删除)。

  5. 选择 Update(更新)。

删除标签 (Amazon CLI)

使用 delete-tags 命令删除标签。例如,以下命令删除键为 environment 的标签。

aws autoscaling delete-tags --tags "ResourceId=my-asg,ResourceType=auto-scaling-group,Key=environment"

您必须指定标签键,但无需指定值。如果您指定了一个值,并且该值不正确,则不会删除标签。

安全性标签

使用标签来控制您账户中的 IAM 用户和组可以创建、修改或删除的自动扩缩组。使用下面的一个或多个条件键,在 IAM policy 的条件元素中提供标签信息:

  • 使用 autoscaling:ResourceTag/tag-key: tag-value 可允许(或拒绝)带特定标签的 Auto Scaling 组上的用户操作。

  • 使用 aws:RequestTag/tag-key: tag-value 要求在请求中存在(或不存在)特定标签。

  • 使用 aws:TagKeys [tag-key, ...] 要求在请求中存在(或不存在)特定标签键。

例如,您可能拒绝对包含具有键 environment 和值 production 的标签的 Auto Scaling 组的访问,如以下示例所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": {"autoscaling:ResourceTag/environment": "production"} } } ] }

有关更多示例,请参阅 Amazon EC2 Auto Scaling 基于身份的策略示例

控制对标签的访问

IAM 还支持控制您账户中的哪些 IAM 用户和组拥有添加、修改或删除 Auto Scaling 组的标签权限。

例如,您可以创建一个 IAM policy,以仅允许从自动扩缩组删除具有 temporary 键的标签。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:DeleteTags" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary"] } } } ] }

有关更多示例,请参阅 Amazon EC2 Auto Scaling 基于身份的策略示例

注意

在实例启动后,即使您制定限制您的用户对 Auto Scaling 组执行标记(或取消标记)操作的策略,这也不会防止他们手动更改实例上的标签。有关控制对 EC2 实例上标签访问的示例,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的示例:标记资源

使用标签筛选 Auto Scaling 组

以下示例向您演示如何将筛选条件与 describe-auto-scaling-groups 命令搭配使用来描述具有特定标签的 Auto Scaling 组。按标签筛选仅限于 Amazon CLI 或 SDK,并且不可从控制台使用。

筛选注意事项

  • 您可以在单一请求中指定多个筛选条件和多个筛选条件值。

  • 您不可以将通配符与筛选值一同使用。

  • 筛选值区分大小写。

示例:使用特定标签键和值对描述 Auto Scaling 组

以下命令展示了如何筛选结果以仅显示具有 environment=production 的标签键和值对的 Auto Scaling 组。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment Name=tag-value,Values=production

以下为响应示例。

{ "AutoScalingGroups": [ { "AutoScalingGroupARN": "arn", "HealthCheckGracePeriod": 0, "SuspendedProcesses": [], "DesiredCapacity": 1, "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], "EnabledMetrics": [], "LoadBalancerNames": [], "AutoScalingGroupName": "my-asg", ... } ] }

或者,您也可以使用 tag:<key> 筛选条件指定标签。例如,以下命令展示了如何筛选结果以仅显示具有 environment=production 的标签键和值对的 Auto Scaling 组。此筛选条件的格式如下所示:Name=tag:<key>,Values=<value>,其中采用代表标签键值对的 <key><value>

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production

你也可以通过使用 --query 选项筛选 Amazon CLI 输出。以下示例演示了如何限制上一条命令的 Amazon CLI 输出仅限为仅给出组名称、最小容量、最大容量和所需容量属性。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production \ --query "AutoScalingGroups[].{AutoScalingGroupName: AutoScalingGroupName, MinSize: MinSize, MaxSize: MaxSize, DesiredCapacity: DesiredCapacity}"

以下为响应示例。

[ { "AutoScalingGroupName": "my-asg", "MinSize": 0, "MaxSize": 10, "DesiredCapacity": 1 } ... ]

有关筛选的详细信息,请参阅 Amazon Command Line Interface 用户指南中的筛选 Amazon CLI 输出

示例:描述带有与指定标签键匹配的标签的 Auto Scaling 组

以下命令演示了如何筛选结果以仅显示带有 environment 标签的 Auto Scaling 组,并且不考虑标签值。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment

示例:描述带有与指定标签键集匹配的标签的 Auto Scaling 组

以下命令显示如何筛选结果以仅显示带有 environmentproject 的标签的 Auto Scaling 组,并且不考虑标签值。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment Name=tag-key,Values=project

示例:描述具有与至少一个指定标签键匹配的标签的 Auto Scaling 组

以下命令显示如何筛选结果以仅显示带有 environmentproject 的标签的 Auto Scaling 组,并且不考虑标签值。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment,project

示例:描述带有指定标签值的 Auto Scaling 组

以下命令展示了如何筛选结果以仅显示标签值为 production 的 Auto Scaling 组,并且不考虑标签键。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production

示例:描述带有指定标签值集的 Auto Scaling 组

以下命令显示如何筛选结果以仅显示具有标签值 productiondevelopment 的 Auto Scaling 组,并且不考虑标签键。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production Name=tag-value,Values=development

示例:描述带有与至少一个指定标签值匹配的标签的 Auto Scaling 组

以下命令展示了如何筛选结果以仅显示标签值为 productiondevelopment 的 Auto Scaling 组,并且不考虑标签键。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production,development

示例:描述带有与多个标签键和值匹配的标签的 Auto Scaling 组

您还可以组合筛选条件来创建自定义 AND 和 OR 逻辑,以执行更复杂的筛选。

以下命令显示如何筛选结果以仅显示具有特定标签集的 Auto Scaling 组。一个标签键是 environment AND,并且标签值是 (production OR development) AND;而另一个标签键是 costcenter AND,并且标签值是 cc123

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production,development Name=tag:costcenter,Values=cc123