インスタンスのメタデータからインスタンスのタグにアクセスできます。インスタンスメタデータからタグにアクセスすると、DescribeInstances
または DescribeTags
API コールを使用してタグ情報を取得する必要がなくなります。これにより、1 秒あたりの API トランザクションが削減され、制御するインスタンスの数に応じてタグ取得をスケーリングできるようになります。さらに、インスタンスで実行されているローカルプロセスはインスタンスのメタデータからインスタンスのタグ情報を直接表示できます。
デフォルトではインスタンスメタデータからタグは使用できません。アクセスを明示的に許可する必要があります。インスタンスの起動時、または実行中または停止したインスタンスでの起動後にアクセスを許可できます。起動テンプレートでこれを指定することで、タグへのアクセスを許可することもできます。テンプレートを使用してインスタンスが起動されると、インスタンスメタデータ内のタグへのアクセスが許可されます。
インスタンスタグを追加または削除すると、インスタンスの実行中にインスタンスのメタデータが更新されます。インスタンスを停止して起動したりする必要はありません。
デフォルトではインスタンスメタデータ内のインスタンスタグへのアクセス権はありません。各インスタンスで、明示的にアクセスを有効にする必要があります。
インスタンスメタデータのタグへのアクセスを許可する場合、インスタンスタグキーが具体的な制限の対象になります。コンプライアンスに違反すると、新しいインスタンスの起動が失敗したり、既存のインスタンスのエラーが発生します。制限は次のとおりです。
-
英字 (a-z
、A-Z
)、数字 (0-9
)、および + - = . , _
: @
の各文字のみを含めることができます。
-
スペースと /
を含めることはできません。
-
.
(1 つのピリオド)、..
(2 つのピリオド)、または _index
だけで構成することはできません。
詳細については、「タグの制限」を参照してください。
- Console
-
インスタンスの起動後に、インスタンスメタデータ内のタグへのアクセスを許可するには
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。
-
ナビゲーションペインで、[インスタンス] を選択してください。
-
インスタンスを選択し、[アクション]、[インスタンス設定]、[インスタンスメタデータ内のタグを許可する] の順に選択してください。
-
インスタンスメタデータのタグへのアクセスを許可するには[許可] チェックボックスをオンにします。
-
[保存] を選択します。
- AWS CLI
-
インスタンスの起動時に、インスタンスメタデータ内のタグへのアクセスを許可するには
run-instances コマンドを使用して、次の --metadata-options
オプションを追加します。
--metadata-options "InstanceMetadataTags=enabled"
インスタンスの起動後に、インスタンスメタデータ内のタグへのアクセスを許可するには
次の modify-instance-metadata-options コマンドを使用します。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0
\
--instance-metadata-tags enabled
インスタンスメタデータ内のタグへのアクセスが許可されていることを確認するには
describe-instances コマンドを使用して InstanceMetadataTags
の値を確認します。
aws ec2 describe-instances \
--instance-ids i-1234567890abcdef0
\
--query "Reservations[*].Instances[].MetadataOptions[].InstanceMetadataTags"
以下は出力例です。この値は enabled
または disabled
のどちらかです。
[
"enabled"
]
- PowerShell
-
インスタンスの起動時に、インスタンスメタデータ内のタグへのアクセスを許可するには
New-EC2Instance コマンドレットを使用して、次の -MetadataOptions_InstanceMetadataTags
パラメータを追加します。
-MetadataOptions_InstanceMetadataTags enabled
インスタンスの起動後に、インスタンスメタデータ内のタグへのアクセスを許可するには
Edit-EC2InstanceMetadataOption コマンドレットを使用します。
Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0
`
-InstanceMetadataTags enabled
インスタンスメタデータ内のタグへのアクセスが許可されていることを確認するには
Get-EC2Instance コマンドレットを使用して、InstanceMetadataTags
の値をチェックします。
(Get-EC2Instance `
-InstanceId i-1234567890abcdef0
).Instances.MetadataOptions.InstanceMetadataTags.Value
以下は出力例です。この値は enabled
または disabled
のどちらかです。
enabled
インスタンスメタデータでインスタンスタグへのアクセスを許可すると、インスタンスのメタデータから tags/instance
カテゴリにアクセスできます。詳細については、「EC2 インスタンスのインスタンスメタデータにアクセスする」を参照してください。
- IMDSv2
-
リナックス
次のコマンドを Linux インスタンスから実行し、インスタンスのすべてのタグキーを一覧表示します。
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance
この例では、前回の例で取得したキーの値を取得します。IMDSv2 リクエストは前の例のコマンドで作成された保管されているトークンを使用します。このトークンは有効期限が切れていない必要があります。
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/tag-key
Windows
次のコマンドレットを Windows インスタンスから実行し、インスタンスのすべてのタグキーを一覧表示します。
$token = Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
-Method PUT -Uri http://169.254.169.254/latest/api/token
Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token" = $token} `
-Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance
この例では、前回の例で取得したキーの値を取得します。IMDSv2 リクエストは前の例のコマンドで作成された保管されているトークンを使用します。このトークンは有効期限が切れていない必要があります。
Invoke-RestMethod `
-Headers @{"X-aws-ec2-metadata-token" = $token} `
-Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance/tag-key
- IMDSv1
-
リナックス
次のコマンドを Linux インスタンスから実行し、インスタンスのすべてのタグキーを一覧表示します。
curl http://169.254.169.254/latest/meta-data/tags/instance
この例では、前回の例で取得したキーの値を取得します。
curl http://169.254.169.254/latest/meta-data/tags/instance/tag-key
Windows
次のコマンドレットを Windows インスタンスから実行し、インスタンスのすべてのタグキーを一覧表示します。
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/tags/instance
この例では、前回の例で取得したキーの値を取得します。
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/tags/instance/tag-key
インスタンスメタデータ内の、インスタンスタグへのアクセスを無効にすることができます。インスタンスメタデータ内のインスタンスタグへのアクセスは、デフォルトで無効になっているため、起動時にこれを無効にする必要はありません。
- Console
-
インスタンスメタデータ内のタグへのアクセスを無効にするには
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。
-
ナビゲーションペインで、[インスタンス] を選択してください。
-
インスタンスを選択し、[Actions] (アクション)、[Instance settings] (インスタンス設定)、[Allow tags in instance metadata] (インスタンスメタデータ内のタグを許可する) の順に選択してください。
-
インスタンスメタデータのタグへのアクセスを無効にするには[許可] チェックボックスをオフにします。
-
[保存] を選択します。
- AWS CLI
-
インスタンスメタデータ内のタグへのアクセスを無効にするには
次の modify-instance-metadata-options コマンドを使用します。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0
\
--instance-metadata-tags disabled
- PowerShell
-
インスタンスメタデータ内のタグへのアクセスを無効にするには
Edit-EC2InstanceMetadataOption コマンドレットを使用します。
Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0
`
-InstanceMetadataTag disabled