

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lightsail でインスタンスメタデータサービス (IMDS) をアクセスおよび設定する
<a name="amazon-lightsail-configuring-instance-metadata-service"></a>

次のいずれかのメソッドを使用して、実行中のインスタンスからインスタンスメタデータにアクセスできます。
+ インスタンスメタデータサービスバージョン 1 (IMDSv1) – リクエスト/レスポンスメソッド
+ インスタンスメタデータサービスバージョン 2 (IMDSv2) – セッション指向メソッド
**重要**  
Lightsail のすべてのインスタンスブループリントが IMDSv2 をサポートされているわけではありません。`MetadataNoToken` インスタンスメトリクスは、IMDSv1 を使用しているインスタンスメタデータサービスへの呼び出しの数を追跡します。詳細については、「[インスタンスのメトリクスを表示する](amazon-lightsail-viewing-instance-health-metrics.md)」を参照してください。

デフォルトではIMDSv1またはIMDSv2のいずれか、あるいは両方を使用できます。インスタンスメタデータサービスは、IMDSv2 に固有の `PUT` ヘッダーまたは `GET` ヘッダーがリクエストに存在するかどうかに基づいて、IMDSv1 リクエストと IMDSv2 リクエ ストを区別します。詳細については、「[EC2 Instance Metadata Service の拡張により、オープンファイアウォール、リバースプロキシ、および SSRF の脆弱性に対して多層防御を追加する](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)」を参照してください。

ローカルコードまたはユーザーに IMDSv2を使用させるように、各インスタンスのインスタンスメタデータサービスを構成することができます。IMDSv2を使用しなければならないように指定すると、IMDSv1はもう機能しなくなります。詳細については、「Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド」の「[インスタンスのメタデータオプションを設定する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)」を参照してください。

インスタンスのメタデータを取得するには、「*Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド*」の「[インスタンスのメタデータの取得](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)」を参照してください。

**注記**  
このセクションの例では、インスタンスメタデータサービスの IPv4 アドレスを使用します (`169.254.169.254`)。IPv6 アドレスを使用してインスタンスのインスタンスメタデータを取得する場合は、IPv6 アドレスを有効にして使用してください (`fd00:ec2::254`)。インスタンスメタデータサービスの IPv6 アドレスは、IMDSv2 コマンドと互換性があります。

## インスタンスメタデータサービスバージョン 2 の仕組み
<a name="instance-metadata-v2-how-it-works"></a>

IMDSv2 は、セッション指向リクエストを使用します。セッション指向リクエストを使用して、セッション期間 (1 秒～6 時間) を定義するセッショントークンを作成します。指定した期間中、それ以降のリクエストに同じセッショントークンを使用できます。指定した期間が期限切れになった後、将来のリクエストに使用する新しいセッショントークンを作成する必要があります。

**重要**  
Amazon Linux 2023 および Ubuntu 24 から起動された Lightsail インスタンスには、デフォルトで IMDSv2 が設定されます。

次の例では、LinuxPowerShell シェルスクリプトと IMDSv2 を使用して、最上位インスタンスメタデータアイテムを取得しています。これらの例では、以下のことを行います。
+ `PUT` リクエストを使用して、6 時間 (21,600 秒) のセッショントークンを作成する
+ セッショントークンヘッダーを `TOKEN` (Linux の場合) または `token` (Windows の場合) という名前の変数に保管する
+ トークンを使用して最上位メタデータアイテムをリクエストする

次のコマンドを使用してインストールして起動します。
+ **Linux の場合:**
  + 最初に、次のコマンドを使用してトークンを生成します。

    ```
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    ```
  + その後、次のコマンドを使用して、トークンを使用して上位レベルのメタデータアイテムを生成します。

    ```
    [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
    ```
+ **Windows の場合:**
  + 最初に、次のコマンドを使用してトークンを生成します。

    ```
    PS C:\> [string]$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/
    ```

トークンを作成した後、期限切れになるまで再使用することができます。次の例では、各コマンドはインスタンスの起動に使用されるブループリント (Amazon マシンイメージ (AMI)) の ID を取得します。前の例のトークンは再利用されます。`$TOKEN` (Linux) または `$token` (Windows) に保管されます。
+ **Linux の場合:**

  ```
  [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id
  ```
+ **Windows の場合:**

  ```
  PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
  -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
  ```

IMDSv2 を使用してインスタンスメタデータをリクエストする際は、リクエストに次の項目が含まれている必要があります。
+ **`PUT` リクエスト** – `PUT` リクエストを使用して、インスタンスメタデータサービスに対してセッションを開始します。`PUT` リクエストは、インスタンスメタデータサービスに対する後続の `GET` リクエストに含まれている必要のあるトークンを返します。このトークンは、IMDSv2 を使用する際、メタデータにアクセスするのに必要です。
+ **トークン** – トークンを、インスタンスメタデータサービスに対するすべての `GET` リクエストに含めます。トークンの使用が `required` に設定されている場合、有効なトークンがないリクエスト、または有効期限切れのトークンを持つリクエストで `401 - Unauthorized` HTTP エラーコードが発生します。トークン使用要件の変更に関する情報については、「AWS CLI コマンドリファレンス」の「[インスタンスのメタデータのオプションの更新](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)」を参照してください。
  + トークンはインスタンス固有のキーです。トークンは他のインスタンスで有効ではなく、生成されたインスタンスの外で使用しようとすると拒否されます。
  + `PUT` リクエストには、トークンの有効期限 (TTL) を秒単位で指定するヘッダーが含まれている必要があります。TTL は最大 6 時間 (21,600 秒) まで指定できます。トークンは論理的セッションを表します。TTL はトークンが有効な時間の長さ、つまりセッションの期間を指定します。
  + トークンの期限が切れた後、インスタンスメタデータにアクセスし続けるためには、別の `PUT` リクエストを使用して新しいセッションを作成する必要があります。
  + 各リクエストについてトークンを再使用するか、あるいは新しいトークンを作成することを選択できます。少数のリクエストでは、インスタンスメタデータサービスにアクセスする必要があるたびに、トークンを生成してすぐに使用するほうが簡単かもしれません。ただし、効率を重視するなら、インスタンスメタデータをリクエストする必要があるたびに `PUT` リクエストを書くのではなく、トークン期間を長く指定して再使用することができます。それぞれが独自のセッションを表すトークンを同時に使用できる数については、実質的な制限はありません。ただし、IMDSv2 では、通常のインスタンスメタデータサービス接続とスロットリングの制限によって制約を受けます。詳細については、「Linux インスタンス向け Amazon Elastic Compute Cloud ユーザーガイド」の「[クエリスロットリング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instancedata-throttling)」を参照してください。

HTTP `GET` および `HEAD` メソッドは IMDSv2 インスタンスメタデータリクエストで許可されています。`PUT` リクエストは、`X-Forwarded-For` ヘッダーが含まれている場合、拒否されます。

デフォルトで、`PUT` リクエストに対するレスポンスには IP プロトコルレベルで `1` のレスポンスホップリミット (有効期限) があります。より大きなホップリミットが必要な場合は、`update-instance-metadata-options` コマンドを使用して調整できます。例えば、インスタンスで実行されているコンテナサービスとの下位互換性のためにホップリミットを拡大する必要があるかもしれません。詳細については、「AWS CLI コマンドリファレンス」の「[update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)」を参照してください。

## インスタンスメタデータサービスバージョン 2 の使用への移行
<a name="instance-metadata-transition-to-version-2"></a>

インスタンスメタデータサービスバージョン 2 (IMDSv2) の使用は任意です。インスタンスメタデータサービスバージョン 1 (IMDSv1) は、終了の期限なく引き続きサポートされます。IMDSv2 の使用に移行する場合、次のツールと移行パスを使用することが推奨されます。

**IMDSv2** への移行に役立つツール

お使いのソフトウェアで IMDSv1 が使用されている場合、次のツールを使用して IMDSv2 を使用するようソフトウェアを再構成することができます。
+ **AWS ソフトウェア:** AWS SDKs の最新バージョンと は IMDSv2 AWS CLI をサポートしています。IMDSv2 を使用するには、インスタンスに最新バージョンの AWS SDKs と があることを確認します AWS CLI。の更新の詳細については AWS CLI、 *AWS Command Line Interface ユーザーガイド*の[「 のインストール、更新、アンインストール AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。すべての Amazon Linux 2 ソフトウェアパッケージが IMDSv2 をサポートしています。
+ **インスタンスのメトリクス**: IMDSv2 はトークンベースのセッションを使用しますが、IMDSv1 は使用しません。`MetadataNoToken` インスタンスのメトリクスは、IMDSv1 を使用しているインスタンスメタデータサービスへの呼び出しの数を追跡します。このメトリクスをゼロまでトラッキングすることにより、すべてのソフトウェアが IMDSv2 を使用するようアップグレードされたかどうか、およびいつアップデートが行われたかを測定できます。詳細については、「[Amazon Lightsail でインスタンスのメトリクスを表示する](amazon-lightsail-viewing-instance-health-metrics.md)」を参照してください。
+ **Lightsail API オペレーションと AWS CLI コマンドの更新**: 既存のインスタンスでは、[update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html) AWS CLI コマンド (または [UpdateInstanceMetadataOptions](https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateInstanceMetadataOptions.html) API オペレーション) を使用してIMDSv2 の使用を要求できます。コマンドの例を次に示します。{{InstanceName}} をインスタンスの名前に置き換え、{{RegionName}} をインスタンスの に置き換え AWS リージョン てください。

  ```
  aws lightsail update-instance-metadata-options --region {{RegionName}} --instance-name {{InstanceName}} --http-tokens required
  ```

**IMDSv2 アクセスを必要とする推奨パス**

前述のツールを使用し、IMDSv2 への移行にこのパスに従うことを推奨します。

### ステップ 1: 開始時
<a name="path-step-1"></a>

インスタンスでロール認証情報を使用する AWS SDKs AWS CLI、、およびソフトウェアを IMDSv2-compatibleバージョンに更新します。の更新の詳細については AWS CLI、「 *AWS Command Line Interface ユーザーガイド*」の[「 の最新バージョンへのアップグレード AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-linux.html#install-linux-awscli-upgrade)」を参照してください。

次に、IMDSv2 リクエストを使用して、インスタンスメタデータに直接アクセスする (つまり、 AWS SDK を使用しない) ソフトウェアを変更します。

### ステップ 2: 移行中
<a name="path-step-2"></a>

`MetadataNoToken` のインスタンスメトリクスを使用して、移行の進行状況を追跡します。このメトリクスは、インスタンスで IMDSv1 を使用しているインスタンスメタデータサービスへの呼び出しの数を示します。詳細については、「[インスタンスのメトリクスを表示する](amazon-lightsail-viewing-instance-health-metrics.md)」を参照してください。

### ステップ 3: すべてのインスタンスですべての準備が完了した時点
<a name="path-step-3"></a>

インスタンスのメトリクス `MetadataNoToken` が IMDSv1 の使用ゼロを記録した時点で、すべてのインスタンスにおいてすべての準備が完了します。この段階で、[インスタンスのメタデータのオプションの更新](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html) コマンドから IMDSv2 の使用をリクエストできます。実行中のインスタンスでこれらの変更を行うことができます。インスタンスを再起動する必要はありません。

既存のインスタンスのインスタンスメタデータオプションの更新は、Lightsail API または AWS CLIを介してのみ使用できます。現在のところ、Lightsail コンソールでは使用できません。詳細については、「[update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)」を参照してください。

## IMDS 関連の追加のドキュメント
<a name="amazon-lightsail-configuring-instance-metadata-service-imds-documentation"></a>

次の IMDS ドキュメントは、「*Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド*」と「*Windows インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド*」で利用できます。

**注記**  
Amazon EC2 では、インスタンスのブループリントは Amazon マシンイメージ (AMIs) と呼ばれます。
+ Linux インスタンスの場合:
  + [インスタンスメタデータオプションの設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
  + [インスタンスメタデータの取得](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)
  + [インスタンスユーザーデータの使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html)
  + [動的データの取得](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-dynamic-data-retrieval.html)
  + [インスタンスメタデータのカテゴリ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)
  + [例: AMI 作成インデックス値](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMI-launch-index-examples.html)
  + [インスタンスアイデンティティドキュメント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html)
+ Windows インスタンスの場合:
  + [インスタンスメタデータオプションの設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
  + [インスタンスメタデータの取得](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)
  + [インスタンスユーザーデータの使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html)
  + [動的データの取得](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-dynamic-data-retrieval.html)
  + [インスタンスメタデータのカテゴリ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)
  + [例: AMI 作成インデックス値](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMI-launch-index-examples.html)
  + [インスタンスアイデンティティドキュメント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html)