Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに、インスタンスメタデータサービス (IMDS) を設定しようとしています。
簡単な説明
すべての AWS リージョンにわたり、AWS アカウントの新しいインスタンスにデフォルトの IMDS 機能を設定できます。デフォルトでは、最新のインスタンスタイプは Instance Metadata Service バージョン 2 (IMDSv2) を使用します。これらのインスタンスタイプで Instance Metadata Service バージョン 1 (IMDSv1) を使用するには、インスタンスで IMDSv1 を手動でアクティブ化する必要があります。IMDSv1 を使用する必要がない限り、セキュリティの観点から、IMDSv2 の使用をおすすめします。
重要: インスタンスで IMDSv2 を設定した場合、IMDSv1 は動作しなくなり、IMDSv1 を使用するアプリケーションが正しく機能しなくなる可能性があります。IMDSv2 を適用する前に、Amazon EC2 メタデータを使用するアプリケーションを IMDSv2 をサポートするバージョンにアップグレードしてください。IMDSv1 と IMDSv2 の違いに関する詳細については、「Instance Metadata Service を使用してインスタンスメタデータにアクセスする」を参照してください。
デフォルトでは、Amazon EC2 はインスタンスメタデータ内のインスタンスタグへのアクセスを付与しません。インスタンスの起動時、あるいは実行中または停止中のインスタンスが起動した後に、アクセスを許可する必要があります。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
インスタンスメタデータの設定には、次の方法を組み合わせることができます。ただし、メタデータオプションの優先順位は、インスタンスの起動時に階層的に設定されます。
AMI レベルでのインスタンスメタデータを設定する
既存または新規の Amazon マシンイメージ (AMI) は、IMDSv2 を使用するように設定できます。設定を行った AMI を使用してインスタンスを起動すると、Amazon EC2 はインスタンスメタデータのバージョンを IMDSv2 に、ホップ制限を 2 に自動的に設定します。
重要: AMI ソフトウェアが IMDSv2 をサポートしていることを確認してください。imds-support の値を v2.0 に設定した後に、元に戻すことはできません。基盤スナップショットを使用して新しい AMI を作成する以外の方法では、その AMI はリセットできません。
新しい AMI が IMDSv2 を使用するように設定するには、次の AWS CLI コマンド register-image を実行します。
aws ec2 register-image \
--name my-image \
--root-device-name /dev/xvda \
--block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
--architecture x86_64 \
--imds-support v2.0
注: 実際のものでそれぞれ、my-image を AMI 名に、/dev/xvda を ルートボリュームのデバイス名に、snap-0123456789example をスナップショット ID に、x86_64 をアーキテクチャに置き換えます。
既存の AMI が IMDSv2 を使用するように設定するには、次の modify-image-attribute コマンドを実行します。
aws ec2 modify-image-attribute \
--image-id ami-0123456789example \
--imds-support v2.0
注: ami-0123456789example を既存の AMI ID に置き換えてください。
起動テンプレートのメタデータでタグを許可する
AMI のタグへのアクセスは、直接設定することはできません。Amazon EC2 起動テンプレートを作成する必要があります。[詳細設定] で、[メタデータのタグを許可] を - に設定します。この起動テンプレートから起動するインスタンスでは、そのインスタンスのメタデータ内のすべてのタグにアクセスできます。
アカウントレベルでインスタンスメタデータを設定する
アカウント内のすべてのインスタンスにIMDSv2を設定します。または、IMDSv1 を許可するには、[メタデータバージョン] で [V1とV2 (トークン省略可能)] を選択します。アカウントレベルでインスタンスメタデータのタグにアクセスできるようにするには、[IMDSのデフォルト] で [メタデータのタグへのアクセス] を [有効] に設定します。
重要: インスタンスメタデータは、アカウント内のリージョンごとに 1 回設定する必要があります。
インスタンスレベルでインスタンスメタデータを設定する
注: AWS Identity and Access Management (IAM) ポリシーまたはサービスコントロールポリシーにより、インスタンス設定で行える変更が制限される場合があります。
新しいインスタンスにおいて、IMDS とメタデータ内のタグへのアクセスを設定するには、インスタンスの起動時に [高度な詳細] を展開します。次に、以下の設定を行います。
- [メタデータにアクセス可能] で [有効] を選択します。
- [メタデータバージョン] で [V2 のみ (トークン必須)] または [V1 と V2 (トークン省略可能)] を選択します。
注: Amazon Elastic Container Service (Amazon ECS) や Amazon Elastic Kubernetes サービス (Amazon EKS) などのコンテナ環境を使用する場合は、[メタデータの応答ホップ制限] に 2 を選択します。
- [メタデータのタグへのアクセス] で [有効] を選択します。
既存のインスタンスを変更する場合は、設定を変更します。IMDSv1 または IMDSv2 を使用する場合は、[IMDSv2] で [オプション] を選択してください。IMDSv2 を必須にする場合は、[必須] を選択します。次に、[インスタンス設定] で [インスタンスメタデータのタグを許可] を選択します。
関連情報
デフォルトの Amazon EC2 Instance Metadata Service IMDSv2
IMDSv2 の利点を最大限に活用し、AWS インフラストラクチャ全体で IMDSv1 を無効化する