本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Auto Scaling 组和实例添加标签
标签是您分配或分配给 AWS 资源的自定义属性标签。 AWS 每个标签具有两个部分:
-
标签键(例如,
costcenter
、environment
或project
) -
一个称为标签值的可选字段(例如,
111122223333
或production
)
标签可帮助您:
-
追踪您的 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
标签命名和使用限制
下面是适用于标签的基本限制:
-
每个资源的最大标签数是 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 组的标签
访问 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(更新)。
添加或修改标签 (AWS CLI)
以下示例说明如何在创建 Auto Scaling 组时使用添加标签,以及如何为现有 Auto Scaling 组添加或修改标签。 AWS CLI
创建时标记 Auto Scaling 组
使用create-auto-scaling-group命令创建新的 Auto Scaling 组,然后向 Auto Scaling 组添加标签。environment=production
该标签还会添加到在 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 组的标签 (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 组关联的标签。
删除标签(控制台)
删除标签
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中现有组旁边的复选框。
这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。
-
在 Details(详细信息)选项卡上,选择 Tags(标签)、Edit(编辑)。
-
选择标签旁边的 Remove(删除)。
-
选择 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/
可允许(或拒绝)带特定标签的 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 用户或角色)是否有权添加、修改或删除自动扩缩组的标签。
以下 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 实例上标签访问的示例,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的示例:标记资源。
使用标签筛选 Auto Scaling 组
以下示例向您展示如何使用带describe-auto-scaling-groups命令的筛选器来描述带有特定标签的 Auto Scaling 组。按标签筛选仅限于 AWS 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": [
{
"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>
的标签键和值对的 Auto Scaling 组。此筛选条件的格式如下所示:environment=production
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 组
以下命令演示了如何筛选结果以仅显示带有
标签的 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