

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 修改現有執行個體的執行個體中繼資料選項
<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 Organizations 使用者指南」**中的[宣告式政策](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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體。

1. 選擇**動作**、**執行個體設定**、**修改執行個體中繼資料選項**。

1. 在**修改執行個體中繼資料選項**對話方塊中，執行下列動作：

   1. 針對**執行個體中繼資料服務**，請選取**啟用**。

   1. 針對 **IMDSv2**，請選擇**必要**。

   1. 選擇**儲存**。

------
#### [ 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) cmdlet，並將 `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 強制執行而失敗，您有兩個選項可以讓啟動成功：  
將**執行個體啟動為IMDSv2-only** – 如果在執行個體上執行的軟體僅使用 IMDSv2 （不依賴 IMDSv1)，則您只能將執行個體啟動為僅限 IMDSv2。若要執行此作業，請在啟動參數`httpTokens = required`中設定 IMDSv2，或在區域中帳戶的中繼資料預設值中設定 IMDSv2。
**停用強制執行** – 如果您的軟體仍然依賴 IMDSv1，`disabled`請將 區域中帳戶的 `httpTokensEnforced`設為 。如需詳細資訊，請參閱[在帳戶層級強制執行 IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level)。

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

**在執行個體上還原使用 IMDSv1**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體。

1. 選擇**動作**、**執行個體設定**、**修改執行個體中繼資料選項**。

1. 在**修改執行個體中繼資料選項**對話方塊中，執行下列動作：

   1. 針對**執行個體中繼資料服務**，請確定已選取**啟用**。

   1. 針對 **IMDSv2**，請選擇**選用**。

   1. 選擇**儲存**。

------
#### [ 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**  
您可以將 [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) cmdlet 與 `HttpTokens` 設定為 搭配使用，`optional`以在請求執行個體中繼資料時還原 IMDSv1 的使用。

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

------

## 變更 PUT 回應跳轉限制
<a name="modify-PUT-response-hop-limit"></a>

對於現有執行個體，您可以變更 `PUT` 回應跳轉限制的設定。

目前只有 AWS CLI 和 AWS SDKs 支援變更 PUT 回應跳轉限制。

------
#### [ 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) cmdlet，並將 `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]`)。當您啟用 IMDS 時，IPv4 端點會自動啟用。即使您在僅限 IPv6 的子網路中啟動執行個體，IPv6 端點仍會保持停用狀態。若要啟用 IPv6 端點，則需要明確啟用。當您啟用 IPv6 端點時，IPv4 端點會保持啟用狀態。

您可以在執行個體啟動時或啟動之後啟用 IPv6 端點。

**啟用 IPv6 端點的需求**
+ 選取的執行個體類型是 [Nitro 型執行個體](instance-types.md#instance-hypervisor-type)。
+ 選取的子網路支援 IPv6，其中子網路[僅支援雙重堆疊或 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range)。

目前只有 AWS CLI 和 AWS SDKs 支援在執行個體啟動後啟用 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) cmdlet，並將 `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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體。

1. 選擇**動作**、**執行個體設定**、**修改執行個體中繼資料選項**。

1. 在**修改執行個體中繼資料選項**對話方塊中，執行下列動作：

   1. 針對**執行個體中繼資料服務**，請選取**啟用**。

   1. 選擇**儲存**。

------
#### [ 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) cmdlet，並將 `HttpEndpoint` 參數設定為 `enabled`。

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

------

## 關閉對執行個體中繼資料的存取
<a name="disable-instance-metadata-on-existing-instances"></a>

無論使用哪個版本的 IMDS，都可以停用執行個體上 IMDS 的 HTTP 端點，來關閉對執行個體中繼資料的存取。您可以啟用 HTTP 端點，以隨時反轉這項變更。

使用下列其中一種方法來關閉對執行個體上執行個體中繼資料的存取。

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

**關閉對執行個體中繼資料的存取**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體。

1. 選擇**動作**、**執行個體設定**、**修改執行個體中繼資料選項**。

1. 在**修改執行個體中繼資料選項**對話方塊中，執行下列動作：

   1. 針對**執行個體中繼資料服務**，清除**啟用**。

   1. 選擇**儲存**。

------
#### [ 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) cmdlet，並將 `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-enabled的執行個體失敗
<a name="modifying-an-imdsv1-enabled-instance-fails"></a>

#### Description
<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 組織宣告政策強制使用 IMDSv2 () 的帳戶中將現有執行個體修改為啟用 IMDSv1 () 時，就會擲出此錯誤`httpTokensEnforced = enabled`。`httpTokens = optional` IMDSv2 

#### 解決方案
<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)。

 