スポットインスタンスリクエストを分類および管理しやすくするため、カスタムメタデータでタグ付けすることができます。タグはスポットインスタンスリクエストの作成時、またはその後に割り当てることができます。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 の例では、スポットインスタンスリクエストを次のように設定します。
- Console
-
新しいスポットインスタンスリクエストにタグを付けるには
-
スポットインスタンスを管理するの手順に従います。
-
タグを追加するには[タグの追加] ページで [タグの追加] をクリックし、タグのキーと値を入力してください。追加するタグごとに [別のタグを追加] をクリックしてください。
1 つのタグを、スポットインスタンスリクエスト、スポットインスタンス、およびボリュームに対し同時にタグ付けすることができます。3 つすべてにタグを付けるには[インスタンス]、[ボリューム]、[スポットインスタンスリクエスト] をそれぞれ選択してください。1 つまたは 2 つにのみタグを付けるにはタグを付けるリソースを選択し、他のリソースを選択していないことを確認します。
-
必須フィールドにすべて入力してスポットインスタンスリクエストを作成した後、[起動] を選択してください。詳細については、「スポットインスタンスを管理する」を参照してください。
- AWS CLI
-
新しいスポットインスタンスリクエストにタグを付けるには
request-spot-instances コマンドを --tag-specification
オプションと共に使用します。
このタグ仕様は、スポットインスタンスリクエストに Environment=Production
と Cost-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=Production
と Cost-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
-
既存のスポットインスタンスリクエストにタグ付けをするには
スポットインスタンスリクエストの作成後に、コンソールを使用してそのリクエストにタグを追加できます。
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。
-
ナビゲーションペインで、[Spot Requests] を選択してください。
-
スポットインスタンスリクエストを選択してください。
-
[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
-
- 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