スポットインスタンスリクエストをタグ付けする - Amazon Elastic Compute Cloud

スポットインスタンスリクエストをタグ付けする

スポットインスタンスリクエストを分類および管理しやすくするため、カスタムメタデータでタグ付けすることができます。タグはスポットインスタンスリクエストの作成時、またはその後に割り当てることができます。Amazon EC2 コンソールまたはコマンドラインツールを使用してタグを割り当てることができます。

スポットインスタンスリクエストにタグ付けを行っても、そのスポットインスタンスリクエストによって起動されたインスタンスやボリュームには自動的なタグ付けは行われません。スポットインスタンスリクエストによって起動されたインスタンスやボリュームには明示的にタグを付ける必要があります。スポットインスタンスおよびボリュームへのタグの割り当ては起動時または起動後に行うことができます。

タグの仕組みの詳細についてはAmazon EC2 リソースのタグ付けを参照してください。

前提条件

リソースにタグ付けする許可をユーザーに付与します。IAM ポリシーとサンプルポリシーの詳細については例: リソースのタグ付けを参照してください。

作成する IAM ポリシーはスポットインスタンスリクエストの作成に使用する方法によって決まります。

インスタンス起動ウィザードまたは run-instances を使用する場合にリソースにタグを付けるための許可をユーザーに付与するには

以下を含む IAM ポリシーを作成します。

  • ec2:RunInstances アクション。これにより、インスタンスを起動するための許可がユーザーに付与されます。

  • Resource で、spot-instances-request を指定します。これによりユーザーはスポットインスタンスを要求するためのスポットインスタンスリクエストを作成できるようになります。

  • ec2:CreateTags アクション。これにより、タグを作成する許可がユーザーに付与されます。

  • Resource で、* を指定します。これにより、ユーザーはインスタンスの起動時に作成されるすべてのリソースにタグを付けることを許可されます。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

RunInstances アクションを使用してスポットインスタンスリクエストを作成し、その際、スポットインスタンスリクエストにタグを付ける場合にはAmazon EC2 が RunInstances ステートメント内で spot-instances-request リソースをどのように評価するのかについて、注意を払う必要があります。IAM ポリシーで、次のように評価が行われます。

  • スポットインスタンスリクエストの作成時にタグを付けない場合、Amazon EC2 は RunInstances ステートメント内の spot-instances-request リソースを評価しません。

  • スポットインスタンスリクエストの作成時にタグを付けると、 RunInstances ステートメント内の spot-instances-request リソースが、Amazon EC2 により評価されます。

したがって、spot-instances-request リソースの場合、次のルールが IAM ポリシーに適用されます。

  • RunInstances を使用してスポットインスタンスリクエストを作成し、その際リクエストにタグを付けない場合はspot-instances-request リソースを明示的に許可しなくても、その呼び出しは成功します。

  • RunInstances を使用してスポットインスタンスリクエストを作成する際に、そのリクエストにタグを付ける場合にはRunInstances の許可ステートメントに spot-instances-request リソースを含める必要があります。これがない場合は呼び出しが失敗します。

  • RunInstances を使用してスポットインスタンスリクエストを作成する際に、そのリクエストにタグを付ける場合は許可ステートメント CreateTags で spot-instances-request リソースを指定するか、そこに * ワイルドカードを含める必要があります。これがない場合は呼び出しが失敗します。

IAM ポリシー (スポットインスタンスリクエストでサポートされていないポリシーを含む) の例についてはスポットインスタンス の操作を参照してください。

request-spot-instances を使用する場合でリソースにタグを付けるための許可をユーザーに付与するには

以下を含む IAM ポリシーを作成します。

  • ec2:RequestSpotInstances アクション。これにより、スポットインスタンスリクエストを作成する許可がユーザーに付与されます。

  • ec2:CreateTags アクション。これにより、タグを作成する許可がユーザーに付与されます。

  • Resource で、spot-instances-request を指定します。これにより、ユーザーはスポットインスタンスリクエストにのみタグを付けることが許可されます。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" } ] }

新しいスポットインスタンスリクエストにタグを付ける

AWS CLI および PowerShell の例では、スポットインスタンスリクエストを次のように設定します。

  • ResourceType で、spot-instances-request を指定します。別の値を指定すると、スポットインスタンスリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

Console
新しいスポットインスタンスリクエストにタグを付けるには
  1. スポットインスタンスを管理するの手順に従います。

  2. タグを追加するには[タグの追加] ページで [タグの追加] をクリックし、タグのキーと値を入力してください。追加するタグごとに [別のタグを追加] をクリックしてください。

    1 つのタグを、スポットインスタンスリクエスト、スポットインスタンス、およびボリュームに対し同時にタグ付けすることができます。3 つすべてにタグを付けるには[インスタンス]、[ボリューム]、[スポットインスタンスリクエスト] をそれぞれ選択してください。1 つまたは 2 つにのみタグを付けるにはタグを付けるリソースを選択し、他のリソースを選択していないことを確認します。

  3. 必須フィールドにすべて入力してスポットインスタンスリクエストを作成した後、[起動] を選択してください。詳細については、「スポットインスタンスを管理する」を参照してください。

AWS CLI
新しいスポットインスタンスリクエストにタグを付けるには

request-spot-instances コマンドを --tag-specification オプションと共に使用します。

このタグ仕様は、スポットインスタンスリクエストに Environment=ProductionCost-Center=123 の 2 つのタグを追加します。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'
PowerShell
新しいスポットインスタンスリクエストにタグを付けるには

Request-EC2SpotInstance コマンドレットを -TagSpecification パラメータと共に使用します。

-TagSpecification $tagspec

タグ仕様は次のように定義されます。スポットインスタンスリクエストに Environment=ProductionCost-Center=123 の 2 つのタグを追加します。

$tag1 = @{Key="Environment"; Value="Production"} $tag2 = @{Key="Cost-Center"; Value="123"} $tagspec = New-Object Amazon.EC2.Model.TagSpecification $tagspec.ResourceType = "spot-instances-request" $tagspec.Tags = @($tag1,$tag2)

既存のスポットインスタンスリクエストにタグ付けをする

Console
既存のスポットインスタンスリクエストにタグ付けをするには

スポットインスタンスリクエストの作成後に、コンソールを使用してそのリクエストにタグを追加できます。

  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

  2. ナビゲーションペインで、[Spot Requests] を選択してください。

  3. スポットインスタンスリクエストを選択してください。

  4. [Tags (タグ)] タブを選択してから、[タグの作成] を選択してください。

コンソールを使用して既存のスポットインスタンスにタグを付けるには

スポットインスタンスリクエストによってスポットインスタンスを起動した後で、コンソールを使用して、そのインスタンスにタグを追加できます。詳細については、「コンソールを使用してタグを追加する」を参照してください。

AWS CLI
既存のスポットインスタンスリクエストまたはスポットインスタンスにタグを付けるには

create-tags コマンドを使用して、既存のリソースにタグを付けます。次の例では、既存のスポットインスタンスリクエストとスポットインスタンスに、purpose=test のタグを付けています。

aws ec2 create-tags \ --resources sir-0e54a519c9EXAMPLE i-1234567890abcdef0 \ --tags Key=purpose,Value=test
PowerShell
既存のスポットインスタンスリクエストまたはスポットインスタンスにタグを付けるには

New-EC2Tag コマンドレットを使用します。次の例では、既存のスポットインスタンスリクエストとスポットインスタンスに、タグ purpose=test を追加しています。

New-EC2Tag ` -Resource sir-0e54a519c9EXAMPLE, i-1234567890abcdef0 ` -Tag @{Key="purpose"; Value="test"}

スポットインスタンスリクエストのタグを表示する

Console
スポットインスタンスリクエストのタグを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択してください。

  3. スポットインスタンスリクエストを選択してから、[タグ] タブを選択してください。

AWS CLI
スポットインスタンスリクエストのタグを詳細表示するには

describe-spot-instance-requests コマンドを使用して、指定したスポットインスタンスリクエストの設定を表示します。この内容にはリクエストに指定されたタグがすべて含まれます。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-0e54a519c9EXAMPLE \ --query "SpotInstanceRequests[*].Tags"

以下は出力例です。

[ [ { "Key": "Environment", "Value": "Production" }, { "Key": "Department", "Value": "101" } ] ]
PowerShell
スポットインスタンスリクエストのタグを詳細表示するには

Get-EC2SpotInstanceRequest コマンドレットを使用します。

(Get-EC2SpotInstanceRequest ` -SpotInstanceRequestId sir-0e54a519c9EXAMPLE).Tags

以下は出力例です。

Key Value --- ----- Environment Production Department 101