为 Auto Scaling 组和实例添加标签 - Amazon EC2 Auto Scaling

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

为 Auto Scaling 组和实例添加标签

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

  • 标签键(例如,costcenterenvironmentproject

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

标签可帮助您:

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

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

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

  • 识别和整理您的 AWS 资源。许多都 AWS 服务 支持标记,因此您可以为来自不同服务的资源分配相同的标签,以表明这些资源是相关的。

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

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

您可以通过 AWS Management Console AWS CLI、或 SDK 创建和管理标签。

标签命名和使用限制

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

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

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

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

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

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

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

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(更新)。

添加或修改标签 (AWS CLI)

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

创建时标记 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 组的标签 (AWS 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": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 1, ... "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], ... } ] }

删除标签

您可以随时删除与 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(更新)。

删除标签 (AWS 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 用户或角色)是否有权添加、修改或删除自动扩缩组的标签。

以下 IAM policy 示例授予主体权限仅从自动扩缩组中删除带有 temporary 密钥的标签。

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

有关对自动扩缩组指定的标签实施限制的 IAM policy 的更多示例,请参阅 控制可以使用哪些标签键和标签值

注意

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

使用标签筛选 Auto Scaling 组

以下示例向您演示如何将筛选条件与 describe-auto-scaling-groups 命令搭配使用来描述具有特定标签的 Auto Scaling 组。按标签筛选仅限于 AWS 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": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 1, ... "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], ... }, ... additional groups ... ] }

或者,您也可以使用 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选项筛选 AWS CLI 输出。以下示例说明如何仅将前一个命令的 AWS 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 }, ... additional groups ... ]

有关筛选的更多信息,请参阅《AWS Command Line Interface 用户指南》中的筛选 AWS 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