为 Auto Scaling 组和实例添加标签
标签是您分配的自定义属性标签,或者是 Amazon 分配给 Amazon 资源的标签。每个标签具有两个部分:
-
标签键(例如,
costcenter
、environment
或project
) -
一个称为标签值的可选字段(例如,
111122223333
或production
)
标签可帮助您:
-
跟踪您的 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 组的标签
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中 Auto Scaling 组旁边的复选框。
这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。
-
在 Details(详细信息)选项卡上,选择 Tags(标签)、Edit(编辑)。
-
要修改现有标签,请编辑 Key(键)和 Value(值)。
-
要添加新标签,请选择 Add tag(添加标签),然后编辑 Key(键)和 Value(值)。您可以使标记新实例保持选中状态,以便自动将标签添加到在 Auto Scaling 组启动的实例,否则取消选中它。
-
添加完标签后,选择 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-namemy-launch-config
--min-size1
--max-size3
\ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782
" \ --tags Key=environment
,Value=production
,PropagateAtLaunch=true
创建或修改现有 Auto Scaling 组的标签
使用 create-or-update-tags 命令创建或修改标签。例如,以下命令将添加
和 Name=my-asg
标签。在进行该更改后,该标签还会添加到在 Auto Scaling 组中启动的任何实例。如果具有任一键的标签已经存在,则会替换现有标签。Amazon EC2 控制台将每个实例的显示名称与为 costcenter=cc123
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 组关联的标签。
删除标签(控制台)
删除标签
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中现有组旁边的复选框。
这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。
-
在 Details(详细信息)选项卡上,选择 Tags(标签)、Edit(编辑)。
-
选择标签旁边的 Remove(删除)。
-
选择 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/
可允许(或拒绝)带特定标签的 Auto Scaling 组上的用户操作。tag-key
:tag-value
-
使用
aws:RequestTag/
要求在请求中存在(或不存在)特定标签。tag-key
:tag-value
-
使用
aws:TagKeys [
要求在请求中存在(或不存在)特定标签键。tag-key
, ...]
例如,您可能拒绝对包含具有键
和值 environment
的标签的 Auto Scaling 组的访问,如以下示例所示。production
{ "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 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 组
以下命令展示了如何筛选结果以仅显示具有
的标签键和值对的 Auto Scaling 组。environment=production
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>
的标签键和值对的 Auto Scaling 组。此筛选条件的格式如下所示:environment=production
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 组
以下命令演示了如何筛选结果以仅显示带有
标签的 Auto Scaling 组,并且不考虑标签值。environment
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=
environment
示例:描述带有与指定标签键集匹配的标签的 Auto Scaling 组
以下命令显示如何筛选结果以仅显示带有
和 environment
的标签的 Auto Scaling 组,并且不考虑标签值。project
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=
environment
Name=tag-key,Values=project
示例:描述具有与至少一个指定标签键匹配的标签的 Auto Scaling 组
以下命令显示如何筛选结果以仅显示带有
或 environment
的标签的 Auto Scaling 组,并且不考虑标签值。project
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=
environment
,project
示例:描述带有指定标签值的 Auto Scaling 组
以下命令展示了如何筛选结果以仅显示标签值为
的 Auto Scaling 组,并且不考虑标签键。production
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=
production
示例:描述带有指定标签值集的 Auto Scaling 组
以下命令显示如何筛选结果以仅显示具有标签值
和 production
的 Auto Scaling 组,并且不考虑标签键。development
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=
production
Name=tag-value,Values=development
示例:描述带有与至少一个指定标签值匹配的标签的 Auto Scaling 组
以下命令展示了如何筛选结果以仅显示标签值为
或production
的 Auto Scaling 组,并且不考虑标签键。development
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=
production
,development
示例:描述带有与多个标签键和值匹配的标签的 Auto Scaling 组
您还可以组合筛选条件来创建自定义 AND 和 OR 逻辑,以执行更复杂的筛选。
以下命令显示如何筛选结果以仅显示具有特定标签集的 Auto Scaling 组。一个标签键是
AND,并且标签值是 (environment
OR production
) AND;而另一个标签键是 development
AND,并且标签值是 costcenter
。cc123
aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:
environment
,Values=production
,development
Name=tag:costcenter
,Values=cc123