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

インスタンスメタデータを使用したインスタンスのタグの表示

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

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

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

インスタンスメタデータのタグへのアクセスを許可する

デフォルトでは、インスタンスメタデータ内のインスタンスタグへのアクセス権はありません。インスタンスごとに、次のいずれかの方法を使用してアクセスを明示的に許可する必要があります。

コンソールを使用してインスタンスメタデータのタグへのアクセスを許可するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

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

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

  5. [Save] を選択します。

AWS CLI を使用して起動時にインスタンスメタデータのタグへのアクセスを許可するには

run-instances コマンドを使用して、InstanceMetadataTagsenabled に設定します。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c3.large \ ... --metadata-options "InstanceMetadataTags=enabled"
AWS CLI を使用して実行中または停止中のインスタンス上のインスタンスメタデータ内のタグへのアクセスを許可するには

modify-instance-metadata-options コマンドを使用して、--instance-metadata-tagsenabled に設定します。

aws ec2 modify-instance-metadata-options \ --instance-id i-123456789example \ --instance-metadata-tags enabled

インスタンスメタデータからタグを取得する

インスタンスメタデータでインスタンスタグへのアクセスを許可すると、インスタンスのメタデータから tags/instance カテゴリにアクセスできます。詳細については、「インスタンスメタデータの取得」を参照してください。

インスタンスメタデータサービスバージョン 2

Amazon EC2 インスタンスで次の例を実行して、IMDSv2 のインスタンスメタデータを取得します。

cURL

この例では、インスタンスのタグキーをすべて取得しています。

[ec2-user ~]$ 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 Name Environment

この例では、前の例で取得した Name キーの値を取得しています。IMDSv2 リクエストは、前の例のコマンドで作成された保管されているトークンを使用します。このトークンは有効期限が切れていない必要があります。

[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/Name MyInstance
PowerShell

この例では、インスタンスのタグキーをすべて取得しています。

PS C:\> $token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance Name Environment

この例では、前の例で取得した Name キーの値を取得しています。IMDSv2 リクエストは、前の例のコマンドで作成された保管されているトークンを使用します。このトークンは有効期限が切れていない必要があります。

PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/tags/instance/Name MyInstance
インスタンスメタデータサービスバージョン 1

Amazon EC2 インスタンスで次の例を実行して、IMDSv1 のインスタンスメタデータを取得します。

cURL

この例では、インスタンスのタグキーをすべて取得しています。

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/tags/instance Name Environment

この例では、前の例で取得した Name キーの値を取得しています。

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/tags/instance/Name MyInstance
PowerShell

この例では、インスタンスのタグキーをすべて取得しています。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/tags/instance Name Environment

この例では、前の例で取得した Name キーの値を取得しています。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/tags/instance/Name MyInstance

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

インスタンスメタデータ内のインスタンスタグへのアクセスを無効にするには、次のいずれかの方法を使用します。インスタンスメタデータのインスタンスタグへのアクセスは、デフォルトでオフになっているため、起動時にインスタンスタグへのアクセスをオフにする必要はありません。

コンソールを使用してインスタンスメタデータのタグへのアクセスを無効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

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

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

  5. [Save] を選択します。

AWS CLI を使用してインスタンスメタデータのタグへのアクセスを無効にするには

modify-instance-metadata-options コマンドを使用して、--instance-metadata-tagsdisabled に設定します。

aws ec2 modify-instance-metadata-options \ --instance-id i-123456789example \ --instance-metadata-tags disabled
AWS CLI を使用してインスタンスメタデータのタグへのアクセスが許可されているかどうかを確認するには

describe-instances コマンドを使用して、インスタンス ID を指定します。--query パラメータを使用して、インスタンスメタデータオプションのみを結果に表示します。

aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query "Reservations[*].Instances[*].MetadataOptions"

以下は出力例です。InstanceMetadataTags の値は、インスタンスメタデータのタグへのアクセスが許可されているかどうかを示します。値が enabled の場合、許可されています。値が disabled の場合、許可されていません。

[ [ { "State": "applied", "HttpTokens": "required", "HttpPutResponseHopLimit": 2, "HttpEndpoint": "enabled", "HttpProtocolIpv6": "disabled", "InstanceMetadataTags": "enabled" } ] ]