标记新的或现有的竞价型实例集请求及其启动的实例和卷 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

标记新的或现有的竞价型实例集请求及其启动的实例和卷

要对竞价型实例集请求及其启动的实例和卷进行分类与管理,可以使用自定义元数据标记它们。您可以在创建 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/*" }

要提供访问权限,请为您的用户、组或角色添加权限:

标记新的 Spot 队列及其启动的实例和卷

使用控制台标记新的竞价型实例集请求及其启动的实例和卷
  1. 按照使用已定义的参数创建 Spot 队列请求(控制台)过程操作。

  2. 添加标签的方式取决于您是手动配置实例集还是使用启动模板。

    • 如果手动配置了实例集,请执行以下操作:

      要添加标签,请展开其他启动参数,选择创建标签,然后输入标签的键和值。对每个标签重复此操作。

      对于每个标签,您可以使用相同标签标记 Spot 队列请求和实例。要对两者进行标记,请确保同时选择实例实例集。要仅标记竞价型实例集请求,请清除 Instance(实例)。要仅标记由队列启动的实例,清除 Fleet(队列)。

      注意

      手动配置实例集时,无法选择标记卷。仅附加到按需型实例的卷支持卷标签。手动配置实例集时,您无法指定按需型实例。

    • 如果使用启动模板,请执行以下操作:

      要向实例集请求添加标签,请在标签下,选择创建标签,然后输入该标签的键和值。对每个标签重复此操作。

      要标记实例集中的资源,您必须在启动模板中指定标签。

标记新的竞价型实例集请求及其使用 Amazon 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" } ] } ] } }
使用 Amazon 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 } }
使用 Amazon CLI 标记挂载至由竞价型实例集启动的按需型实例的卷

要在队列创建卷时标记这些卷,您必须在 Spot 队列请求中引用的启动模板中指定标签。

注意

仅附加到按需型实例的卷支持卷标签。您无法标记附加到竞价型实例的卷。

不支持 LaunchSpecifications 中的卷标记。

标记现有的 Spot 队列

使用控制台标记现有 Spot 队列请求

创建竞价型实例集请求后,您可以使用控制台向实例集请求添加标签。

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,请选择 Spot Requests

  3. 选择 Spot 队列请求。

  4. 选择 Tags (标签) 选项卡,然后选择 Create Tag (创建标签)

使用 Amazon CLI 标记现有竞价型实例集请求

可以使用 create-tags 命令标记现有的资源。在以下示例中,使用以下标签标记现有 Spot 队列请求:键=目的,值=测试。

aws ec2 create-tags \ --resources sfr-11112222-3333-4444-5555-66666EXAMPLE \ --tags Key=purpose,Value=test

查看 Spot 队列请求标签

使用控制台查看 Spot 队列请求标签
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,请选择 Spot Requests

  3. 选择您的 Spot 队列请求并选择 Tags (标签) 选项卡。

描述 Spot 队列请求标记

使用 describe-tags 命令可查看指定资源的标签。在以下示例中,您将描述指定 Spot 队列请求的标签。

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 命令可查看指定的 Spot 队列请求的配置,其中包括为队列请求指定的任何标签。

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" } ] } ] }