要对竞价型实例集请求及其启动的实例和卷进行分类与管理,可以使用自定义元数据标记它们。您可以在创建 Spot 队列请求时或之后为其分配标签。同理,可以在实例集启动实例和卷之时或之后为实例和卷分配标签。
在标记队列请求时,不会自动标记队列启动的实例和卷。您需要明确标记队列启动的实例和卷。您可以选择仅将标签分配给实例集请求,仅分配给实例集启动的实例,仅分配给附加到实例集启动的实例的卷,或者分配给所有这三种内容。
注意
您只能标记附加到按需型实例的卷。您无法标记附加到竞价型实例的卷。
您可以使用 Amazon EC2 控制台或命令行工具分配标签。
有关标签的工作原理的更多信息,请参阅标记 Amazon EC2 资源。
先决条件
授予用户标记资源的权限。有关更多信息,请参阅 示例:标记资源。
授予用户标记资源的权限
创建包含以下内容的 IAM policy:
-
ec2:CreateTags
操作。这将授予用户创建标签的权限。 -
ec2:RequestSpotFleet
操作。这将授予用户创建竞价型实例集请求的权限。 -
对于
Resource
,您必须指定"*"
。这允许用户标记所有资源类型。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotFleetRequest", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:RequestSpotFleet" ], "Resource": "*" } ] }
重要
对于 spot-fleet-request
资源,我们目前不支持资源级权限。如果您指定 spot-fleet-request
以作为资源,在您尝试标记队列时,将会发生未经授权异常。以下示例说明如何不 设置策略。
{ "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:RequestSpotFleet" ], "Resource": "arn:aws:ec2:
us-east-1
:111122223333
:spot-fleet-request/*" }
要提供访问权限,请为您的用户、组或角色添加权限:
-
AWS IAM Identity Center 中的用户和群组:
创建权限集合。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
通过身份提供商在 IAM 中托管的用户:
创建适用于身份联合验证的角色。按照《IAM 用户指南》中针对第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 用户:
-
创建您的用户可以担任的角色。按照《IAM 用户指南》中为 IAM 用户创建角色的说明进行操作。
-
(不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》中向用户添加权限(控制台)中的说明进行操作。
-
标记新的 Spot 队列及其启动的实例和卷
使用控制台标记新的竞价型实例集请求及其启动的实例和卷
-
按照使用已定义的参数创建 Spot 队列请求(控制台)过程操作。
-
添加标签的方式取决于您是手动配置实例集还是使用启动模板。
-
如果手动配置了实例集,请执行以下操作:
要添加标签,请展开其他启动参数,选择创建标签,然后输入标签的键和值。对每个标签重复此操作。
对于每个标签,您可以使用相同标签标记 Spot 队列请求和实例。要对两者进行标记,请确保同时选择实例和实例集。要仅标记竞价型实例集请求,请清除 Instance(实例)。要仅标记由队列启动的实例,清除 Fleet(队列)。
注意
手动配置实例集时,无法选择标记卷。仅附加到按需型实例的卷支持卷标签。手动配置实例集时,您无法指定按需型实例。
-
如果使用启动模板,请执行以下操作:
要向实例集请求添加标签,请在标签下,选择创建标签,然后输入该标签的键和值。对每个标签重复此操作。
要标记实例集中的资源,您必须在启动模板中指定标签。
-
标记新的竞价型实例集请求及其使用 AWS CLI 启动的实例和卷
要在创建 Spot 队列请求时标记该请求,并在队列启动实例和卷时标记它们,请按以下方式配置 Spot 队列请求配置:
Spot 队列请求标签:
-
在
SpotFleetRequestConfig
中指定竞价型实例集请求的标签。 -
对于
ResourceType
,请指定spot-fleet-request
。如果指定其他值,队列请求将失败。 -
对于
Tags
,请指定键值对。您可以指定多个键值对。
实例标签:
-
为
LaunchSpecifications
中的实例指定标签。 -
对于
ResourceType
,请指定instance
。如果指定其他值,队列请求将失败。 -
对于
Tags
,请指定键值对。您可以指定多个键值对。或者,您可以在 Spot 队列请求中引用的启动模板中为实例指定标签。
卷标签:
-
在 Spot 队列请求中引用的启动模板中为卷指定标签。不支持
LaunchSpecifications
中的卷标记。
在以下示例中,使用两个标签来标记 Spot 队列请求:键=环境,值=生产;键=成本中心,值=123。由队列启动的实例使用一个标签(与 Spot 队列请求的其中一个标签相同)进行标记:键=成本中心,值=123。
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large",
"TagSpecifications": [
{
"ResourceType": "instance",
"Tags": [
{
"Key": "Cost-Center
",
"Value": "123
"
}
]
}
]
}
],
"SpotPrice": "5",
"TargetCapacity": 2,
"TerminateInstancesWithExpiration": true,
"Type": "maintain",
"ReplaceUnhealthyInstances": true,
"InstanceInterruptionBehavior": "terminate",
"InstancePoolsToUseCount": 1,
"TagSpecifications": [
{
"ResourceType": "spot-fleet-request",
"Tags": [
{
"Key": "Environment
",
"Value":"Production
"
},
{
"Key": "Cost-Center
",
"Value":"123
"
}
]
}
]
}
}
使用 AWS CLI 标记由竞价型实例集启动的实例
要在队列启动实例时标记实例,您可以在 Spot 队列请求中引用的启动模板中指定标记,也可以在 Spot 队列请求配置中指定标记,如下所示:
-
为
LaunchSpecifications
中的实例指定标签。 -
对于
ResourceType
,请指定instance
。如果指定其他值,队列请求将失败。 -
对于
Tags
,请指定键值对。您可以指定多个键值对。
在以下示例中,由队列启动的实例使用一个标签进行标记:键=成本中心,值=123。
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large",
"TagSpecifications": [
{
"ResourceType": "instance",
"Tags": [
{
"Key": "Cost-Center
",
"Value": "123
"
}
]
}
]
}
],
"SpotPrice": "5",
"TargetCapacity": 2,
"TerminateInstancesWithExpiration": true,
"Type": "maintain",
"ReplaceUnhealthyInstances": true,
"InstanceInterruptionBehavior": "terminate",
"InstancePoolsToUseCount": 1
}
}
使用 AWS CLI 标记挂载至由竞价型实例集启动的按需型实例的卷
要在队列创建卷时标记这些卷,您必须在 Spot 队列请求中引用的启动模板中指定标签。
注意
仅附加到按需型实例的卷支持卷标签。您无法标记附加到竞价型实例的卷。
不支持 LaunchSpecifications
中的卷标记。
标记现有的 Spot 队列
使用控制台标记现有 Spot 队列请求
创建竞价型实例集请求后,您可以使用控制台向实例集请求添加标签。
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,请选择 Spot Requests。
-
选择 Spot 队列请求。
-
选择 Tags (标签) 选项卡,然后选择 Create Tag (创建标签)。
使用 AWS CLI 标记现有竞价型实例集请求
可以使用 create-tags
aws ec2 create-tags \ --resources
sfr-11112222-3333-4444-5555-66666EXAMPLE
\ --tags Key=purpose
,Value=test
查看 Spot 队列请求标签
使用控制台查看 Spot 队列请求标签
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,请选择 Spot Requests。
-
选择您的 Spot 队列请求并选择 Tags (标签) 选项卡。
描述 Spot 队列请求标记
使用 describe-tags
aws ec2 describe-tags \ --filters "Name=resource-id,Values=
sfr-11112222-3333-4444-5555-66666EXAMPLE
"
{
"Tags": [
{
"Key": "Environment",
"ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"ResourceType": "spot-fleet-request",
"Value": "Production"
},
{
"Key": "Another key",
"ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"ResourceType": "spot-fleet-request",
"Value": "Another value"
}
]
}
您还可以通过描述 Spot 队列请求来查看 Spot 队列请求的标签。
使用 describe-spot-fleet-requests
aws ec2 describe-spot-fleet-requests \ --spot-fleet-request-ids
sfr-11112222-3333-4444-5555-66666EXAMPLE
{
"SpotFleetRequestConfigs": [
{
"ActivityStatus": "fulfilled",
"CreateTime": "2020-02-13T02:49:19.709Z",
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimized",
"OnDemandAllocationStrategy": "lowestPrice",
"ExcessCapacityTerminationPolicy": "Default",
"FulfilledCapacity": 2.0,
"OnDemandFulfilledCapacity": 0.0,
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large"
}
],
"TargetCapacity": 2,
"OnDemandTargetCapacity": 0,
"Type": "maintain",
"ReplaceUnhealthyInstances": false,
"InstanceInterruptionBehavior": "terminate"
},
"SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"SpotFleetRequestState": "active",
"Tags": [
{
"Key": "Environment",
"Value": "Production"
},
{
"Key": "Another key",
"Value": "Another value"
}
]
}
]
}