インスタンスメタデータを使用して EC2 インスタンスのタグを表示する - Amazon Elastic Compute Cloud

インスタンスメタデータを使用して EC2 インスタンスのタグを表示する

インスタンスのメタデータからインスタンスのタグにアクセスできます。インスタンスメタデータからタグにアクセスすると、DescribeInstances または DescribeTags API コールを使用してタグ情報を取得する必要がなくなります。これにより、1 秒あたりの API トランザクションが削減され、制御するインスタンスの数に応じてタグ取得をスケーリングできるようになります。さらに、インスタンスで実行されているローカルプロセスはインスタンスのメタデータからインスタンスのタグ情報を直接表示できます。

デフォルトではインスタンスメタデータからタグは使用できません。アクセスを明示的に許可する必要があります。インスタンスの起動時、または実行中または停止したインスタンスでの起動後にアクセスを許可できます。起動テンプレートでこれを指定することで、タグへのアクセスを許可することもできます。テンプレートを使用してインスタンスが起動されると、インスタンスメタデータ内のタグへのアクセスが許可されます。

インスタンスタグを追加または削除すると、インスタンスの実行中にインスタンスのメタデータが更新されます。インスタンスを停止して起動したりする必要はありません。

インスタンスメタデータ内のタグへのアクセスを有効にする

デフォルトではインスタンスメタデータ内のインスタンスタグへのアクセス権はありません。各インスタンスで、明示的にアクセスを有効にする必要があります。

注記

インスタンスメタデータのタグへのアクセスを許可する場合、インスタンスタグキーが具体的な制限の対象になります。コンプライアンスに違反すると、新しいインスタンスの起動が失敗したり、既存のインスタンスのエラーが発生します。制限は次のとおりです。

  • 英字 (a-zA-Z)、数字 (0-9)、および + - = . , _ : @ の各文字のみを含めることができます。

  • スペースと / を含めることはできません。

  • . (1 つのピリオド)、.. (2 つのピリオド)、または _index だけで構成することはできません。

詳細については、「タグの制限」を参照してください。

Console
インスタンスの起動時に、インスタンスメタデータ内のタグへのアクセスを許可するには
  1. インスタンスを起動するための手順に従います。

  2. [詳細] を展開し、[メタデータのタグを許可する] で、[有効にする] を選択してください。

  3. [合計mary] (概要) パネルでインスタンスの設定を確認し、[Launch instance] (インスタンスを起動) を選択してください。詳細については、「コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する」を参照してください。

インスタンスの起動後に、インスタンスメタデータ内のタグへのアクセスを許可するには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

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

  3. インスタンスを選択し、[アクション][インスタンス設定][インスタンスメタデータ内のタグを許可する] の順に選択してください。

  4. インスタンスメタデータのタグへのアクセスを許可するには[許可] チェックボックスをオンにします。

  5. [保存] を選択します。

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
インスタンスメタデータ内のタグへのアクセスを無効にするには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

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

  3. インスタンスを選択し、[Actions] (アクション)、[Instance settings] (インスタンス設定)、[Allow tags in instance metadata] (インスタンスメタデータ内のタグを許可する) の順に選択してください。

  4. インスタンスメタデータのタグへのアクセスを無効にするには[許可] チェックボックスをオフにします。

  5. [保存] を選択します。

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