

# インスタンスメタデータサービスのオプションを設定する
<a name="configuring-instance-metadata-options"></a>

インスタンスメタデータサービス (IMDS) はすべての EC2 インスタンスでローカルに実行されます。*インスタンスメタデータオプション*はEC2 インスタンス上の IMDS のアクセシビリティと動作を制御する一連の設定を参照してください。

各インスタンスで、以下のインスタンスメタデータオプションを設定できます。

**[インスタンスメタデータサービス (IMDS)]**: `enabled` \$1 `disabled`  
インスタンスで IMDS を有効または無効にすることができます。無効にすると、ユーザーまたはコードはインスタンスのインスタンスメタデータにアクセスできなくなります。  
IMDS のインスタンスにはIPv4 (`169.254.169.254`) と IPv6 (`[fd00:ec2::254]`) という 2 つのエンドポイントがあります。IMDS を有効にすると、IPv4 エンドポイントが自動的に有効になります。IPv6 エンドポイントを有効にする場合は明示的に有効にする必要があります。

**[IMDS IPv6 エンドポイント]**: `enabled` \$1 `disabled`  
インスタンスで IPv6 IMDS エンドポイントを明示的に有効にできます。IPv6 エンドポイントが有効になっている場合、IPv4 エンドポイントは有効なままになります。IPv6 エンドポイントは[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)と [IPv6 対応サブネット](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) (デュアルスタックまたは IPv6 のみ) でのみサポートされています。

**[メタデータのバージョン]**: `IMDSv1 or IMDSv2 (token optional)` \$1 `IMDSv2 only (token required)`  
インスタンスメタデータをリクエストするとき、IMDSv2 呼び出しはトークンを要求します。IMDSv1 呼び出はトークンを要求しません。IMDSv1 または IMDSv2 呼び出しを許可する (トークンがオプションの場合) か、IMDSv2 呼び出しのみを許可する (トークンが必須の場合) ように、インスタンスを設定できます。

**[メタデータレスポンスのホップ制限]**: `1`～`64`  
ホップ制限はPUT レスポンスが実行できるネットワークホップの数です。ホップ制限は最小 `1`、最大 `64` に設定できます。コンテナ環境では、`1` のホップ制限によって問題が発生する可能性があります。これらの問題を軽減する方法については、[インスタンスメタデータアクセス考慮事項](instancedata-data-retrieval.md#imds-considerations) でコンテナ環境に関する情報を参照してください。

**[インスタンスメタデータ内のタグにアクセスする]**: `enabled` \$1 `disabled`  
インスタンスのメタデータからインスタンスのタグへのアクセスを有効または無効にすることができます。詳細については[インスタンスメタデータを使用して EC2 インスタンスのタグを表示する](work-with-tags-in-IMDS.md) を参照してください。

インスタンスの現在の設定を確認するには、「[既存インスタンスのインスタンスメタデータオプションのクエリ](instancedata-data-retrieval.md#query-IMDS-existing-instances)」を参照してください。

## インスタンスメタデータオプションを設定する場所
<a name="where-to-configure-instance-metadata-options"></a>

インスタンスメタデータオプションは次のようにさまざまなレベルで設定できます。
+ **アカウント** – 各 AWS リージョンのアカウントレベルで、インスタンスメタデータオプションのデフォルト値を設定できます。インスタンスが起動すると、インスタンスメタデータオプションは自動的にアカウントレベルの値に設定されます。これらの値は起動時に変更できます。アカウントレベルのデフォルト値は既存のインスタンスには影響しません。
+ **AMI** – AMI を登録または変更するときに、`imds-support` パラメータを `v2.0` に設定できます。この AMI でインスタンスを起動すると、インスタンスメタデータバージョンは自動的に「IMDSv2」に設定され、ホップ制限は「2」に設定されます。
+ **インスタンス** – 起動時にインスタンスのすべてのインスタンスメタデータオプションを変更し、デフォルト設定を上書きできます。実行中または停止中のインスタンスで起動した後に、インスタンスメタデータオプションを変更することもできます。変更は IAM または SCP ポリシーによって制限される可能性があることに注意してください。

詳細については[新規インスタンスのインスタンスメタデータオプションの設定](configuring-IMDS-new-instances.md)および[既存インスタンスのインスタンスメタデータオプションの変更](configuring-IMDS-existing-instances.md)を参照してください。

## インスタンスメタデータオプションの優先順位
<a name="instance-metadata-options-order-of-precedence"></a>

各インスタンスメタデータオプションの値はインスタンスの起動時に優先順位に従って決定されます。最上位の優先順位を持つ階層は次のとおりです。
+ **優先順位 1: 起動時のインスタンス設定** – 値は起動テンプレートまたはインスタンス設定のいずれかで指定できます。ここで指定された値はアカウントレベルまたは AMI で指定された値を上書きします。
+ **優先順位 2: アカウント設定** – インスタンスの起動時に値が指定されていない場合はアカウントレベルの設定 (AWS リージョンごとに設定) によって値が決まります。アカウントレベルの設定では各メタデータオプションの値が含まれているか、まったく指定がないことが示されるかのどちらかです。
+ **優先順位 3: AMI 設定** – インスタンスの起動時に、またはアカウントレベルで値が指定されていない場合はAMI 設定によって値が決まります。これは`HttpTokens` と `HttpPutResponseHopLimit` にのみ該当します。

各メタデータオプションは個別に評価されます。インスタンスは直接インスタンス設定、アカウントレベルのデフォルト、および AMI からの設定を組み合わせて設定できます。

IAM または SCP ポリシーによって変更が制限されていない限り、実行中または停止中のインスタンスで起動した後に、任意のメタデータオプションの値を変更できます。

**注記**  
アカウントレベルでの IMDSv2 の強制適用設定の評価は、優先順位によってインスタンスの IMDS 設定が判断された後で行われます。IMDSv2 の強制適用を有効にすると、IMDSv1 が有効化されているインスタンスは失敗します。強制適用に関する詳細については、「[アカウントレベルで IMDSv2 を強制適用する](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level)」を参照してください。

**警告**  
IMDSv2 の強制適用が有効になっており、`httpTokens` が起動時のインスタンス設定、アカウント設定、または AMI 構成のいずれかで `required` に設定されていない場合、起動は失敗します。

**例 1 – メタデータオプションの値を判断する**

この例ではEC2 インスタンスはアカウントレベルで `HttpPutResponseHopLimit` が `1` に設定されているリージョンで起動されます。指定された AMI では`ImdsSupport` が `v2.0` に設定されています。起動時に、インスタンスでメタデータオプションが直接指定されることはありません。インスタンスは次のメタデータオプションを使用して起動されます。

```
"MetadataOptions": {
    ...
    "HttpTokens": "required",
    "HttpPutResponseHopLimit": 1,
    ...
```

これらの値は次のように決定されました。
+ **起動時にメタデータオプションが指定されていない:** インスタンスの起動時に、メタデータオプションの特定の値が、インスタンス起動パラメータにも、起動テンプレートにも指定されていませんでした。
+ **アカウント設定が次に優先される:** 起動時に特定の値が指定されていない場合はリージョン内のアカウントレベルの設定が優先されます。つまり、アカウントレベルで設定されたデフォルト値が適用されます。この場合は`HttpPutResponseHopLimit` が `1` に設定されました。
+ **AMI 設定が最後に優先される:** 起動時またはアカウントレベルで `HttpTokens` (インスタンスメタデータバージョン) に特定の値が指定されていない場合はAMI 設定が適用されます。この場合はAMI 設定 `ImdsSupport: v2.0` により、`HttpTokens` が `required` に設定されました。AMI 設定 `ImdsSupport: v2.0` は `HttpPutResponseHopLimit: 2` 設定するように設計されていますが、優先順位の高いアカウントレベルの設定 `HttpPutResponseHopLimit: 1` によって上書きれることに注意してください。

**例 2 – メタデータオプションの値を判断する**

この例ではEC2 インスタンスは前の例 1 と同じ設定で起動されますが、起動時にインスタンスで直接 `HttpTokens` が `optional` に設定されています。インスタンスは次のメタデータオプションを使用して起動されます。

```
"MetadataOptions": {
    ...
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    ...
```

`HttpPutResponseHopLimit` の値は例 1 と同じ方法で決定されます。ただし、`HttpTokens` の値は次のように決定されます。起動時にインスタンスで設定されているメタデータオプションが最優先されます。AMI が `ImdsSupport: v2.0` で設定されている (つまり、`HttpTokens` が `required` に設定されている) 場合でも、起動時にインスタンスで指定されている値 (`HttpTokens` が `optional` に設定されている) が優先されます。

**例 3 – HttpTokensEnforced が有効化されているメタデータオプションの値を判断する**

この例では、リージョン内のアカウントに `HttpTokens = required` と `HttpTokensEnforced = enabled` があります。

次の EC2 インスタンス起動試行を検討します。
+ `HttpTokens` を `optional` に設定した起動試行 – アカウントレベルでの強制適用が有効 (`HttpTokensEnforced = enabled`) になっており、アカウントのデフォルトよりも起動パラメータが優先されるため、起動が失敗します。
+ `HttpTokens` を `required` に設定した起動試行 — アカウントレベルの強制適用に従っているため、起動は正常に行われます。
+ `HttpTokens` 値が指定されていない起動試行 – 値はアカウント設定に基づいてデフォルトの `required` になるため、起動は正常に行われます。

### インスタンスのメタデータバージョンを設定する
<a name="metadata-version-order-of-precedence"></a>

インスタンスの起動時におけるインスタンス*メタデータバージョン*の値は、**[IMDSv1 または IMDSv2 (トークンはオプション)]** (`httpTokens=optional`) か **[IMDSv2 のみ (トークンは必須)]** (`httpTokens=required`) のいずれかになります。

インスタンスの起動時に、メタデータバージョンの値を手動で指定するか、デフォルト値を使用できます。値を手動で指定すると、すべてのデフォルト値が上書きされます。値を手動で指定しないことを選択した場合は、デフォルト設定の組み合わせによって判断されます。

次のフローチャートは、起動時におけるインスタンスメタデータバージョンが、構成の異なるレベルでの設定と、強制適用が評価される場所によって判断される仕組みを示しています。次の表は、各レベル固有の設定を示しています。

![\[インスタンスメタデータバージョンと IMDSv2 の強制適用の評価ポイントを示すフローチャート。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/imds-defaults-launch-flow.png)


この表は起動時のインスタンスのメタデータバージョン (列 4 の **[結果として生じるインスタンス設定]** で示される) が、さまざまなレベルの設定によってどのように決定されるかを示しています。優先順位は左から右で、次のように最初の列が最も優先されます。
+ 列 1: **[起動パラメータ]** - 起動時に手動で指定するインスタンスの設定を表します。
+ 列 2: **[アカウントレベルのデフォルト]** - アカウントの設定を表します。
+ 列 3: **[AMI のデフォルト]** - AMI の設定を表します。


| 起動パラメータ | アカウントレベルのデフォルト | AMI のデフォルト | 結果として生じるインスタンス設定 | 
| --- | --- | --- | --- | 
| V2 のみ (トークンが必要) | 指定なし | V2 のみ | V2 のみ | 
| V2 のみ (トークンが必要) | V2 のみ | V2 のみ | V2 のみ | 
| V2 のみ (トークンが必要) | V1 または V2 | V2 のみ | V2 のみ | 
| V1 または V2 (トークンはオプション) | 指定なし | V2 のみ | V1 または V2 | 
| V1 または V2 (トークンはオプション) | V2 のみ | V2 のみ | V1 または V2 | 
| V1 または V2 (トークンはオプション) | V1 または V2 | V2 のみ | V1 または V2 | 
| 未設定 | 指定なし | V2 のみ | V2 のみ | 
| 未設定 | V2 のみ | V2 のみ | V2 のみ | 
| 未設定 | V1 または V2 | V2 のみ | V1 または V2 | 
| V2 のみ (トークンが必要) | 指定なし | null | V2 のみ | 
| V2 のみ (トークンが必要) | V2 のみ | null | V2 のみ | 
| V2 のみ (トークンが必要) | V1 または V2 | null | V2 のみ | 
| V1 または V2 (トークンはオプション) | 指定なし | null | V1 または V2 | 
| V1 または V2 (トークンはオプション) | V2 のみ | null | V1 または V2 | 
| V1 または V2 (トークンはオプション) | V1 または V2 | null | V1 または V2 | 
| 未設定 | 指定なし | null | V1 または V2 | 
| 未設定 | V2 のみ | null | V2 のみ | 
| 未設定 | V1 または V2 | null | V1 または V2 | 

## IAM 条件キーを使用してインスタンスメタデータオプションを制限する
<a name="iam-condition-keys-and-imds"></a>

IAM ポリシーまたは SCP で IAM 条件キーを次のように使用できます。
+ IMDSv2 の使用を要求するようにインスタンスが設定されている場合にのみ、インスタンスの起動を許可する
+ ホップの許可数を制限する
+ インスタンスメタデータへのアクセスを無効にする

**Topics**
+ [

## インスタンスメタデータオプションを設定する場所
](#where-to-configure-instance-metadata-options)
+ [

## インスタンスメタデータオプションの優先順位
](#instance-metadata-options-order-of-precedence)
+ [

## IAM 条件キーを使用してインスタンスメタデータオプションを制限する
](#iam-condition-keys-and-imds)
+ [

# 新規インスタンスのインスタンスメタデータオプションの設定
](configuring-IMDS-new-instances.md)
+ [

# 既存インスタンスのインスタンスメタデータオプションの変更
](configuring-IMDS-existing-instances.md)

**注記**  
注意深く実行し、変更を行う前に慎重なテストを実施する必要があります。以下の情報を記録します。  
IMDSv2の使用を強制する場合、インスタンスメタデータアクセスのためにIMDSv1を使用するアプリケーションまたはエージェントは休憩します。
インスタンスメタデータへのアクセスをすべてオフにする場合、インスタンスメタデータアクセスに依存して機能するアプリケーションまたはエージェントは休憩します。
IMDSv2 でトークンを取得する際には`/latest/api/token` を使用する必要があります｡
(Windows のみ) PowerShell のバージョンが 4.0 より前の場合はIMDSv2 の使用を要求するために [Windows Management Framework 4.0 に更新](https://devblogs.microsoft.com/powershell/windows-management-framework-wmf-4-0-update-now-available-for-windows-server-2012-windows-server-2008-r2-sp1-and-windows-7-sp1/)する必要があります。

# 新規インスタンスのインスタンスメタデータオプションの設定
<a name="configuring-IMDS-new-instances"></a>

新規インスタンスに、以下のインスタンスメタデータオプションを設定できます。

**Topics**
+ [

## IMDSv2 の使用を要求する
](#configure-IMDS-new-instances)
+ [

## IMDS IPv4 および IPv6 エンドポイントを有効にする
](#configure-IMDS-new-instances-ipv4-ipv6-endpoints)
+ [

## インスタンスメタデータへのアクセスを無効にする
](#configure-IMDS-new-instances--turn-off-instance-metadata)
+ [

## インスタンスメタデータのタグへのアクセスを許可する
](#configure-IMDS-new-instances-tags-in-instance-metadata)

**注記**  
これらのオプションの設定はアカウントレベルで直接、または宣言ポリシーを使用して設定されます。これらはインスタンスメタデータオプションを設定する各 AWS リージョン で設定する必要があります。宣言型ポリシーを使用すると、複数の リージョンと複数の アカウントで同時に設定を適用できます。宣言ポリシーが使用されている場合、アカウント内で直接設定を変更することはできません。このトピックでは、アカウント内で設定を直接設定する方法について説明します。宣言ポリシーの使用の詳細については*AWS Organizations「 ユーザーガイド」*の[「宣言ポリシー」](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)を参照してください。

## IMDSv2 の使用を要求する
<a name="configure-IMDS-new-instances"></a>

次の方法を使用して、新しいインスタンスで IMDSv2 の使用を必須にすることができます。

**Topics**
+ [

### IMDSv2 をアカウントのデフォルトとして設定する
](#set-imdsv2-account-defaults)
+ [

### アカウントレベルで IMDSv2 を強制適用する
](#enforce-imdsv2-at-the-account-level)
+ [

### 起動時にインスタンスを設定する
](#configure-IMDS-new-instances-instance-settings)
+ [

### AMI を設定する
](#configure-IMDS-new-instances-ami-configuration)
+ [

### IAM ポリシーを使用する
](#configure-IMDS-new-instances-iam-policy)

### IMDSv2 をアカウントのデフォルトとして設定する
<a name="set-imdsv2-account-defaults"></a>

インスタンスメタデータサービス (IMDS) のデフォルトバージョンは各 AWS リージョンのアカウントレベルで設定できます。つまり、*新規*インスタンスを起動すると、そのインスタンスメタデータバージョンは自動的にアカウントレベルのデフォルトに設定されます。ただし、起動時または起動後に値を手動で上書きできます。アカウントレベルの設定と手動オーバーライドがインスタンスに与える影響の詳細については「[インスタンスメタデータオプションの優先順位](configuring-instance-metadata-options.md#instance-metadata-options-order-of-precedence)」を参照してください。

**注記**  
アカウントレベルのデフォルトを設定しても、*既存の*インスタンスはリセットされません。例えば、アカウントレベルのデフォルトを IMDSv2 に設定しても、IMDSv1 に設定されている既存のインスタンスは影響を受けません。既存のインスタンスの値を変更する場合はインスタンス自体の値を手動で変更する必要があります。

インスタンスメタデータバージョンのアカウントのデフォルトを IMDSv2 に設定すると、アカウント内のすべての*新しい*インスタンスを IMDSv2 で起動できます。そうすると、IMDSv1 は無効になります。このアカウントデフォルトではインスタンスを起動すると、インスタンスのデフォルト値は次のようになります。
+ コンソール: **[メタデータのバージョン]** は **[V2 のみ (トークンは必須)]** に設定され、**[メタデータレスポンスのホップ制限]** は **[2]** に設定されます。
+ AWS CLI: `HttpTokens` は `required` に設定され、`HttpPutResponseHopLimit` は `2` に設定されます。

**注記**  
アカウントのデフォルトを IMDSv2 に設定する前に、インスタンスが IMDSv1 に依存していないことを確認してください。詳細については「[IMDSv2 を必要とする推奨パス](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2)」を参照してください。

------
#### [ Console ]

**指定したリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. AWS リージョン を変更するにはページの右上隅にあるリージョンセレクターを使用します。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[データ保護とセキュリティ]** を選択します。

1. **[IMDS のデフォルト]** の横にある **[管理]** を選択してください。

1. **[IMDS のデフォルトを管理]** ページで、次の操作を実行します。

   1. **[インスタンスメタデータサービス]** で、**[有効にする]** を選択してください。

   1. **[Metadata version]** (メタデータバージョン) には**[V2 only (token required)**] (V2 のみ (トークンが必要)) を選択してください。

   1. インスタンスがコンテナをホストする場合は**[メタデータレスポンスのホップ制限]** で **2** を指定します。それ以外の場合は**[設定なし]** を選択してください。設定なしが指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで **2** になります。それ以外の場合はデフォルトで **1** になります。

   1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**指定したリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**  
[modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) コマンドを使用して、IMDS アカウントレベルの設定を変更するリージョンを指定します。インスタンスがコンテナをホストする場合は`--http-tokens` を `required` に、`--http-put-response-hop-limit` を `2` に設定します。それ以外の場合は`-1` を指定して、設定がないことを示します。`-1` (設定なし) が指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで `2` になります。それ以外の場合はデフォルトで `1` になります。

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-put-response-hop-limit 2
```

出力例を次に示します。

```
{
    "Return": true
}
```

**指定したリージョンのインスタンスメタデータオプションのデフォルトのアカウント設定を表示するには**  
[get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) コマンドを使用して、リージョンを指定します。

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

出力例を次に示します。

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpPutResponseHopLimit": 2
    },
    "ManagedBy": "account"
}
```

`ManagedBy` フィールドは設定を設定したエンティティを示します。この例では `account`は設定がアカウントで直接設定されたことを示します。`declarative-policy`という値は宣言的ポリシーによって設定が構成されたことを意味します。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

**すべてのリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**  
すべてのリージョンの IMDS アカウントレベル設定を変更するには[modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) コマンドを使用します。インスタンスがコンテナをホストする場合は`--http-tokens` を `required` に、`--http-put-response-hop-limit` を `2` に設定します。それ以外の場合は`-1` を指定して、設定がないことを示します。`-1` (設定なし) が指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで `2` になります。それ以外の場合はデフォルトで `1` になります。

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens required \
            --http-put-response-hop-limit 2 \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

出力例を次に示します。

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**すべてのリージョンのインスタンスメタデータオプションのデフォルトアカウント設定を表示するには**  
[get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) コマンドを使用します。

```
echo -e "Region   \t Level          Hops    HttpTokens" ; \
echo -e "-------------- \t ------------   ----    ----------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

出力例を次に示します。

```
Region           Level          Hops    HttpTokens
--------------   ------------   ----    ----------
ap-south-1       ACCOUNTLEVEL   2       required
eu-north-1       ACCOUNTLEVEL   2       required
eu-west-3        ACCOUNTLEVEL   2       required
...
```

------
#### [ PowerShell ]

**指定したリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**  
[Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) コマンドレットを使用して、IMDS アカウントレベルの設定を変更するリージョンを指定します。インスタンスがコンテナをホストする場合は`-HttpToken` を `required` に、`-HttpPutResponseHopLimit` を `2` に設定します。それ以外の場合は`-1` を指定して、設定がないことを示します。`-1` (設定なし) が指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで `2` になります。それ以外の場合はデフォルトで `1` になります。

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

出力例を次に示します。

```
True
```

**指定したリージョンのインスタンスメタデータオプションのデフォルトのアカウント設定を表示するには**  
[Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) コマンドレットを使用して、リージョンを指定します。

```
Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List
```

出力例を次に示します。

```
HttpEndpoint            : 
HttpPutResponseHopLimit : 2
HttpTokens              : required
InstanceMetadataTags    :
```

**すべてのリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**  
[Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) コマンドレットを使用して、すべてのリージョンの IMDS アカウントレベル設定を変更します。インスタンスがコンテナをホストする場合は`-HttpToken` を `required` に、`-HttpPutResponseHopLimit` を `2` に設定します。それ以外の場合は`-1` を指定して、設定がないことを示します。`-1` (設定なし) が指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで `2` になります。それ以外の場合はデフォルトで `1` になります。

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

正常な出力

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**すべてのリージョンのインスタンスメタデータオプションのデフォルトアカウント設定を表示するには**  
[Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) コマンドレットを使用します。

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

 出力の例

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### アカウントレベルで IMDSv2 を強制適用する
<a name="enforce-imdsv2-at-the-account-level"></a>

各 AWS リージョンに対し、アカウントレベルで IMDSv2 の使用を強制できます。使用が強制されると、インスタンスを起動できるのは IMDSv2 が必須として設定されている場合のみになります。この強制は、インスタンスまたは AMI の設定方法を問わずに適用されます。

**注記**  
アカウントレベルで IMDSv2 の強制適用を有効にする前に、アプリケーションと AMI が IMDSv2 をサポートしていることを確認してください。詳細については「[IMDSv2 を必要とする推奨パス](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2)」を参照してください。IMDSv2 の強制適用が有効になっており、`httpTokens` が起動時のインスタンス設定、アカウント設定、または AMI 構成のいずれかで `required` に設定されていない場合、インスタンスの起動は失敗します。トラブルシューティング情報については、「[IMDSv1 が有効化されたインスタンスの起動が失敗する](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails)」を参照してください。

**注記**  
この設定は既存のインスタンスの IMDS バージョンを変更しませんが、IMDSv1 が現在無効になっている既存のインスタンスでの IMDSv1 の有効化を阻止します。

------
#### [ Console ]

**指定されたリージョン内のアカウントに IMDSv2 を強制適用する**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. AWS リージョンを変更するには、ページの右上隅にあるリージョンセレクターを使用します。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[データ保護とセキュリティ]** を選択します。

1. **[IMDS のデフォルト]** の横にある **[管理]** を選択してください。

1. **[IMDS のデフォルトを管理]** ページで、次の操作を実行します。

   1. **[Metadata version]** (メタデータバージョン) には**[V2 only (token required)**] (V2 のみ (トークンが必要)) を選択してください。

   1. **[IMDSv2 を強制適用]** で **[有効]** を選択します。

   1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**指定されたリージョン内のアカウントに IMDSv2 を強制適用する**  
 [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) コマンドを使用して、IMDSv2 を強制適用するリージョンを指定します。

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-tokens-enforced enabled
```

出力例を次に示します。

```
{
"Return": true
}
```

**特定のリージョン内のアカウントに対する IMDSv2 の強制適用設定を表示する**  
[get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) コマンドを使用して、リージョンを指定します。

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

出力例を次に示します。

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpTokensEnforced": "enabled"
    },
    "ManagedBy": "account"
}
```

`ManagedBy` フィールドは設定を設定したエンティティを示します。この例では `account`は設定がアカウントで直接設定されたことを示します。`declarative-policy`という値は宣言的ポリシーによって設定が構成されたことを意味します。詳細については、「*AWS Organizations ユーザーガイド*」の「[宣言型ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

**すべてのリージョンのアカウントに IMDSv2 を強制適用する**  
[modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) コマンドを使用して、すべてのリージョンで IMDSv2 を強制適用します。

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

出力例を次に示します。

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**すべてのリージョン内のアカウントに対する IMDSv2 の強制適用設定を表示する**  
[get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) コマンドを使用します。

```
echo -e "Region   \t Level           HttpTokensEnforced" ; \
echo -e "-------------- \t ------------   ----------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --query 'AccountLevel.HttpTokensEnforced' \           
            --output text)
        echo -e "$region \t ACCOUNTLEVEL $output" 
    );
done
```

出力例を次に示します。

```
Region           Level          HttpTokensEnforced
--------------   ------------   ------------------
ap-south-1       ACCOUNTLEVEL   enabled
eu-north-1       ACCOUNTLEVEL   enabled
eu-west-3        ACCOUNTLEVEL   enabled
...
```

------
#### [ PowerShell ]

**指定されたリージョン内のアカウントに IMDSv2 を強制適用する**  
[Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) コマンドレットを使用して、IMDSv2 を強制適用するリージョンを指定します。

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

出力例を次に示します。

```
@{
    Return = $true
}
```

**特定のリージョン内のアカウントに対する IMDSv2 の強制適用設定を表示する**  
Get-EC2InstanceMetadataDefault コマンドを使用して、リージョンを指定します。

```
Get-EC2InstanceMetadataDefault -Region us-east-1
```

出力例を次に示します。

```
@{
    AccountLevel = @{
        HttpTokens = "required"
        HttpTokensEnforced = "enabled"
    }
    ManagedBy = "account"
}
```

`ManagedBy` フィールドは設定を設定したエンティティを示します。この例では `account`は設定がアカウントで直接設定されたことを示します。`declarative-policy`という値は宣言的ポリシーによって設定が構成されたことを意味します。詳細については、「*AWS Organizations ユーザーガイド*」の「[宣言型ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

**すべてのリージョンのアカウントに IMDSv2 を強制適用する**  
[modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) コマンドを使用して、すべてのリージョンで IMDSv2 を強制適用します。

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

出力例を次に示します。

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**すべてのリージョンのアカウントのデフォルトとして IMDSv2 を設定するには**  
[Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) コマンドレットを使用して、すべてのリージョンの IMDS アカウントレベル設定を変更します。インスタンスがコンテナをホストする場合は`-HttpToken` を `required` に、`-HttpPutResponseHopLimit` を `2` に設定します。それ以外の場合は`-1` を指定して、設定がないことを示します。`-1` (設定なし) が指定されているとき、AMI に `ImdsSupport: v2.0` の設定がある場合は起動時の値がデフォルトで `2` になります。それ以外の場合はデフォルトで `1` になります。

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

正常な出力

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**すべてのリージョンのインスタンスメタデータオプションのデフォルトアカウント設定を表示するには**  
[Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) コマンドレットを使用します。

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

 出力の例

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### 起動時にインスタンスを設定する
<a name="configure-IMDS-new-instances-instance-settings"></a>

[インスタンスを起動](ec2-launch-instance-wizard.md)する際に、以下のフィールドを設定しておくことで、IMDSv2 が使用されるようにそのインスタンスを構成できます。
+ Amazon EC2 コンソール: **[Metadata version]** (メタデータバージョン) で、**[V2 only (token required)]** (V2 のみ (トークンが必須)) を設定します。
+ AWS CLI: `HttpTokens` に `required` を設定します。

IMDSv2 が必須であることを指定する場合、**[メタデータにアクセス可能]** に **[有効]** (コンソールの場合) を設定するか、`HttpEndpoint` に `enabled` (AWS CLI の場合) を設定して、インスタンスメタデータサービス (IMDS) のエンドポイントも有効にする必要があります。

コンテナ環境ではIMDSv2 が要求されている場合、ホップ制限を `2` に設定することをお勧めします。詳細については「[インスタンスメタデータアクセス考慮事項](instancedata-data-retrieval.md#imds-considerations)」を参照してください。

------
#### [ Console ]

**新しいインスタンスで IMDSv2 の使用を要求するには**
+ Amazon EC2 コンソールで新しいインスタンスを起動するとき、**[Advanced details]** (高度な詳細) を展開し、次の操作を行います。
  + **[Metadata accessible]** (メタデータにアクセス可能) には**[Enabled]** (有効) を選択してください。
  + **[Metadata version]** (メタデータバージョン) には**[V2 only (token required)**] (V2 のみ (トークンが必要)) を選択してください。
  + (コンテナ環境) **[メタデータレスポンスのホップ制限]** で、**2** を選択してください。

  詳細については「[高度な詳細](ec2-instance-launch-parameters.md#liw-advanced-details)」を参照してください。

------
#### [ AWS CLI ]

**新しいインスタンスで IMDSv2 の使用を要求するには**  
次の [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) の例では`c6i.large` を `--metadata-options` に設定して `HttpTokens=required` インスタンスを起動します。`HttpTokens` の値を指定する場合は`HttpEndpoint` も `enabled` に設定する必要があります。メタデータの取得リクエストではセキュリティで保護されたトークンヘッダーは `required` に設定されるので、インスタンスメタデータのリクエストに際してはそのインスタンスは必ず IMDSv2 を使用することになります。

コンテナ環境ではIMDSv2 が要求されている場合、`HttpPutResponseHopLimit=2` を使用してホップ制限を `2` に設定することをお勧めします。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
	...
    --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
```

------
#### [ PowerShell ]

**新しいインスタンスで IMDSv2 の使用を要求するには**  
次の [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレット例は、`MetadataOptions_HttpEndpoint` が `enabled` に、`MetadataOptions_HttpTokens` パラメータが `required` に設定された `c6i.large` インスタンスを起動します。`HttpTokens` の値を指定する場合は`HttpEndpoint` も `enabled` に設定する必要があります。メタデータの取得リクエストではセキュリティで保護されたトークンヘッダーは `required` に設定されるので、インスタンスメタデータのリクエストに際してはそのインスタンスは必ず IMDSv2 を使用することになります。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpTokens required
```

------
#### [ CloudFormation ]

CloudFormation を使用してインスタンスのメタデータオプションを指定するには「AWS CloudFormation ユーザーガイド**」の「[AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html)」プロパティを参照してください。

------

### AMI を設定する
<a name="configure-IMDS-new-instances-ami-configuration"></a>

新しい AMI を登録したり、既存の AMI を変更したりするときに、`imds-support` パラメータを `v2.0` に設定できます。この AMI から起動されたインスタンスでは、**[メタデータのバージョン]** が **[V2 のみ (トークンは必須)]** (コンソールの場合) に設定されるか、`HttpTokens` が `required` (AWS CLI の場合) に設定されます。この設定が行われている場合、インスタンスメタデータがリクエストされる際には IMDSv2 を使用することが、インスタンスでの必須になります。

この AMI から起動されるインスタンスでは`imds-support` に `v2.0` を設定している場合、**[Metadata response hop limit]** (メタデータレスポンスのホップ制限) (コンソールの場合)、または `http-put-response-hop-limit` (AWS CLI の場合) が「**2**」に設定されることに注意してください。

**重要**  
ご使用の AMI ソフトウェアが IMDSv2 をサポートしていない限りはこのパラメータを使用しないでください。値を `v2.0` に設定すると、元に戻すことはできません。AMI を「リセット」する唯一の方法は基礎となるスナップショットから新しい AMI を作成することです。

**IMDSv2 向けに AMI を新たに設定するには**  
IMDSv2 に新しい AMI を設定するには次のいずれかの方法を使用します。

------
#### [ AWS CLI ]

以下の [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) の例ではEBS ルートボリュームの指定されたスナップショットをデバイス `/dev/xvda` として使用して、AMI を登録しています。`imds-support` パラメータ用に `v2.0` を指定し、この AMI から起動するインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 を使用することが、この AMI から起動されるインスタンスでの必須になります。

```
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
```

------
#### [ PowerShell ]

次の [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) コマンドレット例は、EBS ルートボリュームの指定されたスナップショットをデバイス `/dev/xvda` として使用して、AMI を登録します。`ImdsSupport` パラメータ用に `v2.0` を指定し、この AMI から起動するインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 を使用することが、この AMI から起動されるインスタンスでの必須になります。

```
Register-EC2Image `
    -Name 'my-image' `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping  ( 
    New-Object `
        -TypeName Amazon.EC2.Model.BlockDeviceMapping `
        -Property @{ 
        DeviceName = '/dev/xvda'; 
        EBS        = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ 
                SnapshotId = 'snap-0123456789example'
                VolumeType = 'gp3' 
                } )      
        }  ) `
    -Architecture X86_64 `
    -ImdsSupport v2.0
```

------

**IMDSv2 向けに既存の AMI を設定するには**  
IMDSv2 向けに既存の AMI を設定するには次のいずれかの方法を使用します。

------
#### [ AWS CLI ]

次の [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) の例ではIMDSv2 用の既存の AMI のみを変更します。`imds-support` パラメータ用に `v2.0` を指定し、この AMI から起動するインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 を使用することが、この AMI から起動されるインスタンスでの必須になります。

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --imds-support v2.0
```

------
#### [ PowerShell ]

次の [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) コマンドレット例は、IMDSv2 用の既存の AMI のみを変更します。`imds-support` パラメータ用に `v2.0` を指定し、この AMI から起動するインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 を使用することが、この AMI から起動されるインスタンスでの必須になります。

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -ImdsSupport 'v2.0'
```

------

### IAM ポリシーを使用する
<a name="configure-IMDS-new-instances-iam-policy"></a>

次のいずれかを実行する IAM ポリシーを作成できます。
+ 新しいインスタンスで IMDSv2 を必須と設定する場合を除き、ユーザーが新しいインスタンスを起動することを防ぐ。
+ ユーザーが ModifyInstanceMetadataOptions API をユ呼び出して実行中のインスタンスのメタデータオプションを変更することを防ぐ。ModifyInstanceMetadataOptions httpTokens プロパティへのアクセスを制限して、実行中のインスタンスの意図しない更新が行われないようにする。
+ ユーザーが ModifyInstanceMetadataDefaults API を呼び出して httpTokens と httpTokensEnforced 両方のアカウントデフォルト設定を変更することを防ぐ。これらの 2 つのプロパティへのアクセスを制限することで、承認済みのロール以外はアカウントのデフォルトを変更できないようにします。

**IAM ポリシーにより、すべての新しいインスタンスでの IMDSv2 の使用を必須にするには**  
ユーザーが起動できるインスタンスを、メタデータのリクエスト時に IMDSv2 の使用を必須としているインスタンスに限定するには、次の手順を実行します。
+ `ModifyInstanceMetadataOptions` と `ModifyInstanceMetadataDefaults` API の両方、より具体的には `httpTokens` と `httpTokensEnforced` プロパティへのアクセスを制限します。
+ 次に、アカウントのデフォルトを `httpTokens = required` と `httpTokensEnforced = enabled` に設定します。

  IAM ポリシーの例については[インスタンスメタデータの使用](ExamplePolicies_EC2.md#iam-example-instance-metadata)を参照してください。

## IMDS IPv4 および IPv6 エンドポイントを有効にする
<a name="configure-IMDS-new-instances-ipv4-ipv6-endpoints"></a>

IMDS のインスタンスにはIPv4 (`169.254.169.254`) と IPv6 (`[fd00:ec2::254]`) という 2 つのエンドポイントがあります。IMDS を有効にすると、IPv4 エンドポイントが自動的に有効になります。IPv6 専用サブネットに対してインスタンスを起動しても、その IPv6 エンドポイントは無効のままになります。IPv6 エンドポイントを有効にするには明示的に有効にする必要があります。IPv6 エンドポイントを有効にしても、IPv4 エンドポイントは有効なままになります。

IPv6 エンドポイントはインスタンス起動時またはその後に有効にできます。

**IPv6 エンドポイントを有効にするための要件**
+ 選択されているインスタンスタイプは [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)です。
+ 選択したサブネットはそのサブネットが[デュアルスタックまたは IPv6 専用](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range)である場合、IPv6 をサポートします。

IMDS IPv6 エンドポイント対応のインスタンスを起動するには以下のいずれかの方法を使用します。

------
#### [ Console ]

**インスタンス起動時に IMDS IPv6 エンドポイントを有効にするには**
+ **[Advanced details]** (高度な詳細) で以下のように指定して、Amazon EC2 コンソールで[インスタンスを起動](ec2-launch-instance-wizard.md)します。
  + **メタデータ IPv6 エンドポイント **で、**[有効]** を選択します。

詳細については「[高度な詳細](ec2-instance-launch-parameters.md#liw-advanced-details)」を参照してください。

------
#### [ AWS CLI ]

**インスタンス起動時に IMDS IPv6 エンドポイントを有効にするには**  
以下の [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) の例ではIMDS 用に IPv6 エンドポイントが有効化された、`c6i.large` インスタンスを起動しています。IPv6 エンドポイントを有効にするには`--metadata-options` パラメータに `HttpProtocolIpv6=enabled` を指定します。`HttpProtocolIpv6` の値を指定する場合は`HttpEndpoint` も `enabled` に設定する必要があります。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ...
    --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
```

------
#### [ PowerShell ]

**インスタンス起動時に IMDS IPv6 エンドポイントを有効にするには**  
次の [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレット例は、IMDS 用に IPv6 エンドポイントが有効化された `c6i.large` インスタンスを起動します。IPv6 エンドポイントを有効にするには`MetadataOptions_HttpProtocolIpv6` を `enabled` に指定します。`MetadataOptions_HttpProtocolIpv6` の値を指定する場合は`MetadataOptions_HttpEndpoint` も `enabled` に設定する必要があります。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpProtocolIpv6 enabled
```

------

## インスタンスメタデータへのアクセスを無効にする
<a name="configure-IMDS-new-instances--turn-off-instance-metadata"></a>

インスタンスを起動するときに IMDS を無効にすることで、インスタンスのメタデータへのアクセスを無効にできます。IMDS を再度有効にすると、その後でアクセスを有効にできます。詳細については「[インスタンスメタデータへのアクセスを有効にする](configuring-IMDS-existing-instances.md#enable-instance-metadata-on-existing-instances)」を参照してください。

**重要**  
IMDS は起動時または起動後に無効化できます。*起動時に* IMDS を無効にすると、以下が機能しなくなる可能性があります。  
インスタンスへの SSH アクセスがない可能性があります。キーは通常 EC2 インスタンスのメタデータから提供され、アクセスされるため、インスタンスのパブリック SSH キーである `public-keys/0/openssh-key` にはアクセスできません。
EC2 ユーザーデータは利用できず、インスタンスの起動時には実行されません。EC2 ユーザーデータは IMDS でホストされます。IMDS を無効にすると、ユーザーデータへのアクセスは事実上無効になります。
この機能にアクセスするには起動後に IMDS を再度有効にします。

------
#### [ Console ]

**起動時にインスタンスメタデータへのアクセスを無効にするには**
+ **[Advanced details]** (高度な詳細) で以下のように指定して、Amazon EC2 コンソールで[インスタンスを起動](ec2-launch-instance-wizard.md)します。
  + **[Metadata accessible]** (メタデータにアクセス可能) には**[Disabled]** (無効) を選択してください。

詳細については「[高度な詳細](ec2-instance-launch-parameters.md#liw-advanced-details)」を参照してください。

------
#### [ AWS CLI ]

**起動時にインスタンスメタデータへのアクセスを無効にするには**  
`--metadata-options` に `HttpEndpoint=disabled` を設定し、インスタンスを起動します。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ... 
    --metadata-options "HttpEndpoint=disabled"
```

------
#### [ PowerShell ]

**起動時にインスタンスメタデータへのアクセスを無効にするには**  
次の [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレット例は、`MetadataOptions_HttpEndpoint` が `disabled` に設定されたインスタンスを起動します。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint disabled
```

------
#### [ CloudFormation ]

CloudFormation を使用してインスタンスのメタデータオプションを指定するには「CloudFormation ユーザーガイド**」の「[AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html)」プロパティを参照してください。

------

## インスタンスメタデータのタグへのアクセスを許可する
<a name="configure-IMDS-new-instances-tags-in-instance-metadata"></a>

デフォルトではインスタンスメタデータ内のインスタンスタグへはアクセスできません。インスタンスごとに、アクセスを明示的に許可する必要があります。アクセスが許可されている場合、インスタンスタグ*キー*は特定の文字制限に準拠している必要があります。それ以外の場合はインスタンスの起動に失敗します。詳細については「[インスタンスメタデータ内のタグへのアクセスを有効にする](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS)」を参照してください。

# 既存インスタンスのインスタンスメタデータオプションの変更
<a name="configuring-IMDS-existing-instances"></a>

既存のインスタンスのインスタンスメタデータオプションを変更することが可能です。

また、既存のインスタンスでインスタンスメタデータオプションを変更することをユーザーに禁止する IAM ポリシーを作成することもできます。インスタンスメタデータオプションを変更できるユーザーをコントロールするには指定したロールを持つユーザー以外のすべてのユーザーに [ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html) API の使用を禁止するポリシーを指定できます。IAM ポリシーの例については[インスタンスメタデータの使用](ExamplePolicies_EC2.md#iam-example-instance-metadata)を参照してください。

**注記**  
宣言ポリシーを使用してインスタンスメタデータオプションを設定した場合、アカウント内で直接変更することはできません。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

## IMDSv2 の使用を要求する
<a name="modify-require-IMDSv2"></a>

既存のインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 が使用されるようにするため、既存のインスタンスメタデータオプションを変更します。IMDSv2 が必須である場合、IMDSv1 は使用できません。

**注記**  
IMDSv2 の使用を要求する前に、インスタンスが IMDSv1 呼び出しを行っていないことを確認してください。`MetadataNoToken` CloudWatch メトリクスは IMDSv1 呼び出しを追跡します。あるインスタンスの `MetadataNoToken` で IMDSv1 の使用量がゼロと記録されている場合はそのインスタンスは IMDSv2 を要求できます。

------
#### [ Console ]

**既存インスタンスでの IMDSv2 の使用を義務付けるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. インスタンスを選択してください。

1. **[アクション]**、**[インスタンスの設定]**、**[インスタンスメタデータのオプションを変更]** の順に選択してください。

1. **[インスタンスメタデータオプションの変更]** ダイアログボックスで、次の操作を行います。

   1. **[インスタンスメタデータサービス]** で、**[有効にする]** を選択してください。

   1. **[IMDSv2]** の場合は**[必須]** を選択してください。

   1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

**既存インスタンスでの IMDSv2 の使用を義務付けるには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを使って、`http-tokens` パラメータを `required` に設定できます。`http-tokens` の値を指定する場合は`http-endpoint` も `enabled` に設定する必要があります。

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens required \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**既存インスタンスでの IMDSv2 の使用を義務付けるには**  
[Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、`HttpTokens` パラメータを `required` に設定します。`HttpTokens` の値を指定する場合は`HttpEndpoint` も `enabled` に設定する必要があります。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens required `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## IMDSv1 の使用を再開します
<a name="modify-restore-IMDSv1"></a>

インスタンスで IMDSv2 が必須となっている場合、IMDSv1 リクエストの使用は失敗します。IMDSv2 がオプションである場合、IMDSv2 と IMDSv1 の両方が機能します。このため、IMDSv1 を復元するには、次のいずれかの方法を使用して IMDSv2 をオプション (`httpTokens = optional`) として設定します。

`httpTokensEnforced` IMDS プロパティも、既存のインスタンスで IMDSv1 を有効化する試みを阻止します。リージョン内のアカウントに対して有効化されているときに `httpTokens` を `optional` に設定しようとすると、`UnsupportedOperation` 例外が発生します。詳細については、「[トラブルシューティング](#troubleshoot-modifying-an-imdsv1-enabled-instance-fails)」を参照してください。

**重要**  
IMDSv2 の強制適用が原因でインスタンスの起動が失敗する場合は、起動を正常に行うための 2 つのオプションがあります。  
**インスタンスを IMDSv2 のみとして起動する** – インスタンスで実行されているソフトウェアが IMDSv2 のみを使用している (IMDSv1 に対する依存なし) 場合、インスタンスを IMDSv2 のみとして起動できます。これを実行するには、リージョン内のアカウントの起動パラメータまたはメタデータデフォルトのいずれかで `httpTokens = required` を設定することによって IMDSv2 のみに設定します。
**強制適用を無効にする** – ソフトウェアが依然として IMDSv1 に依存している場合は、リージョン内のアカウントで `httpTokensEnforced` を `disabled` に設定します。詳細については「[アカウントレベルで IMDSv2 を強制適用する](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level)」を参照してください。

------
#### [ Console ]

**インスタンスで IMDSv1 の使用を復元するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. インスタンスを選択してください。

1. **[アクション]**、**[インスタンスの設定]**、**[インスタンスメタデータのオプションを変更]** の順に選択してください。

1. **[インスタンスメタデータオプションの変更]** ダイアログボックスで、次の操作を行います。

   1. **[インスタンスメタデータサービス]** で、**[有効にする]** が選択されていることを確認します。

   1. **[IMDSv2]** の場合は**[オプション]** を選択してください。

   1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

**インスタンスで IMDSv1 の使用を復元するには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを、`http-tokens` を `optional` に設定して実行すると、インスタンスメタデータのリクエスト時に IMDSv1 の使用を復元できます。

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens optional \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**インスタンスで IMDSv1 の使用を復元するには**  
`HttpTokens` を `optional` に設定した [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、インスタンスメタデータのリクエスト時に IMDSv1 の使用を復元できます。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens optional `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## PUT レスポンスホップリミットを変更する
<a name="modify-PUT-response-hop-limit"></a>

既存インスタンスについて、`PUT`リスポンスホップリミットの設定を変更することができます。

現在、PUT 応答ホップ制限の変更をサポートしているのはAWS CLI と AWS SDK のみです。

------
#### [ AWS CLI ]

**PUT レスポンスホップリミットを変更するには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを使って、`http-put-response-hop-limit` パラメータを必要なホップ数に設定できます。以下の例ではホップリミットが`3`に設定されています。`http-put-response-hop-limit` の値を指定する場合は`http-endpoint` を `enabled` に設定することも必要です。

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-put-response-hop-limit 3 \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**PUT レスポンスホップリミットを変更するには**  
[Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、`HttpPutResponseHopLimit` パラメータを必要なホップ数に設定します。以下の例ではホップリミットが`3`に設定されています。`HttpPutResponseHopLimit` の値を指定する場合は`HttpEndpoint` を `enabled` に設定することも必要です。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpPutResponseHopLimit 3 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## IMDS IPv4 および IPv6 エンドポイントを有効にする
<a name="enable-ipv6-endpoint-for-existing-instances"></a>

IMDS のインスタンスにはIPv4 (`169.254.169.254`) と IPv6 (`[fd00:ec2::254]`) という 2 つのエンドポイントがあります。IMDS を有効にすると、IPv4 エンドポイントが自動的に有効になります。IPv6 専用サブネットに対してインスタンスを起動しても、その IPv6 エンドポイントは無効のままになります。IPv6 エンドポイントを有効にするには明示的に有効にする必要があります。IPv6 エンドポイントを有効にしても、IPv4 エンドポイントは有効なままになります。

IPv6 エンドポイントはインスタンス起動時またはその後に有効にできます。

**IPv6 エンドポイントを有効にするための要件**
+ 選択されているインスタンスタイプは [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)です。
+ 選択したサブネットはそのサブネットが[デュアルスタックまたは IPv6 専用](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range)である場合、IPv6 をサポートします。

現在、AWS CLI と AWS SDK のみがインスタンス起動後の IMDS IPv6 エンドポイントの有効化をサポートします。

------
#### [ AWS CLI ]

**インスタンスで IMDS IPv6 エンドポイントを有効にするには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを使って、`http-protocol-ipv6` パラメータを `enabled` に設定できます。`http-protocol-ipv6` の値を指定する場合は`http-endpoint` を `enabled` に設定することも必要です。

```
aws ec2 modify-instance-metadata-options \
	--instance-id i-1234567890abcdef0 \
	--http-protocol-ipv6 enabled \
	--http-endpoint enabled
```

------
#### [ PowerShell ]

**インスタンスで IMDS IPv6 エンドポイントを有効にするには**  
[Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、`HttpProtocolIpv6` パラメータを `enabled` に設定します。`HttpProtocolIpv6` の値を指定する場合は`HttpEndpoint` を `enabled` に設定することも必要です。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpProtocolIpv6 enabled `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## インスタンスメタデータへのアクセスを有効にする
<a name="enable-instance-metadata-on-existing-instances"></a>

使用中の IMDS のバージョンに関係なく、IMDS の HTTP エンドポイントを無効にすることによりインスタンスメタデータへのアクセスをオフにすることができます。HTTP エンドポイントを無効化することにより、この変更はいつでも元に戻すことができます。

次のいずれかの方法を使用して、インスタンスのインスタンスメタデータへのアクセスを有効にします。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. インスタンスを選択してください。

1. **[アクション]**、**[インスタンスの設定]**、**[インスタンスメタデータのオプションを変更]** の順に選択してください。

1. **[インスタンスメタデータオプションの変更]** ダイアログボックスで、次の操作を行います。

   1. **[インスタンスメタデータサービス]** で、**[有効にする]** を選択してください。

   1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

**インスタンスメタデータへのアクセスを有効にするには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを使って、`http-endpoint` パラメータを `enabled` に設定できます。

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint enabled
```

------
#### [ PowerShell ]

**インスタンスメタデータへのアクセスを有効にするには**  
[Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、`HttpEndpoint` パラメータを `enabled` に設定します。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## インスタンスメタデータへのアクセスを無効にする
<a name="disable-instance-metadata-on-existing-instances"></a>

使用中のインスタンスメタデータサービスのバージョンに関係なく、IMDS の HTTP エンドポイントを無効にすることにより IMDS へのアクセスをオフにすることができます。HTTP エンドポイントを有効化することにより、この変更はいつでも元に戻すことができます。

インスタンスのインスタンスメタデータへのアクセスを無効にするには次のいずれかの方法を使用します。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. インスタンスを選択してください。

1. **[アクション]**、**[インスタンスの設定]**、**[インスタンスメタデータのオプションを変更]** の順に選択してください。

1. **[インスタンスメタデータオプションの変更]** ダイアログボックスで、次の操作を行います。

   1. **[インスタンスメタデータサービス]** では**[有効にする]** をオフにします。

   1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

**インスタンスメタデータへのアクセスを無効にするには**  
[modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) CLI コマンドを使って、`http-endpoint` パラメータを `disabled` に設定できます。

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint disabled
```

------
#### [ PowerShell ]

**インスタンスメタデータへのアクセスを無効にするには**  
[Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) コマンドレットを使用して、`HttpEndpoint` パラメータを `disabled` に設定します。

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint disabled).InstanceMetadataOptions
```

------

## インスタンスメタデータのタグへのアクセスを許可する
<a name="modify-access-to-tags-in-instance-metadata-on-existing-instances"></a>

実行中または停止中のインスタンス上のインスタンスメタデータ内のタグへのアクセスを許可できます。インスタンスごとに、アクセスを明示的に許可する必要があります。アクセスが許可されている場合、インスタンスタグ*キー*は特定の文字制限に準拠している必要があります。それ以外の場合はエラーが発生します。詳細については「[インスタンスメタデータ内のタグへのアクセスを有効にする](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS)」を参照してください。

## トラブルシューティング
<a name="troubleshoot-modifying-an-imdsv1-enabled-instance-fails"></a>

### IMDSv1 が有効化されたインスタンスの変更が失敗する
<a name="modifying-an-imdsv1-enabled-instance-fails"></a>

#### 説明
<a name="modifying-an-imdsv1-enabled-instance-fails-description"></a>

以下のエラーメッセージが表示されます。

`You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.`

#### 原因
<a name="modifying-an-imdsv1-enabled-instance-fails-cause"></a>

このエラーは、EC2 アカウント設定または AWS Organization 宣言型ポリシーが IMDSv2 の使用を強制する (`httpTokensEnforced = enabled`) アカウントで既存のインスタンスを IMDSv1 有効 (`httpTokens = optional`) に変更しようとするときにスローされます。

#### ソリューション
<a name="modifying-an-imdsv1-enabled-instance-fails-solution"></a>

既存のインスタンスで IMDSv1 サポートが必要な場合は、リージョン内のアカウントで IMDSv2 の強制適用を無効にする必要があります。IMDSv2 の強制適用を無効にするには、`HttpTokensEnforced` を `disabled`.に設定します。詳細については、「Amazon EC2 API リファレンス」の「[ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html)」を参照してください。この設定をコンソールを使用して行う場合は、「[アカウントレベルで IMDSv2 を強制適用する](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level)」を参照してください。

IMDSv2 のみ (`httpTokens=required`) を使用することをお勧めします。詳細については「[インスタンスメタデータサービスバージョン 2 の使用への移行](instance-metadata-transition-to-version-2.md)」を参照してください。

 