修改現有執行個體的執行個體中繼資料選項 - Amazon Elastic Compute Cloud

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

修改現有執行個體的執行個體中繼資料選項

您可以修改現有執行個體的執行個體中繼資料選項。

您也可以建立 IAM 政策,以防止使用者修改現有執行個體上的執行個體中繼資料選項。若要控制哪些使用者可以修改執行個體中繼資料選項,請指定一個政策,以防止具有指定角色的使用者以外的所有使用者使用 ModifyInstanceMetadataOptions API。如需 IAM 政策範例,請參閱使用執行個體中繼資料

注意

如果使用宣告式政策來設定執行個體中繼資料選項,則您無法直接在帳戶內進行修改。如需詳細資訊,請參閱「AWS Organizations 使用者指南」中的宣告式政策

需要使用 IMDSv2

使用下列其中一種方法來修改現有執行個體上的執行個體中繼資料選項,以便在請求執行個體中繼資料時要求 IMDSv2。當要求 IMDSv2 時,就無法使用 IMDSv1。

注意

在要求使用 IMDSv2 之前,請確定執行個體並未進行 IMDSv1 呼叫。MetadataNoToken CloudWatch 指標會追蹤 IMDSv1 呼叫。當 MetadataNoToken 將執行個體的 IMDSv1 使用量記錄為零時,則執行個體準備好需要 IMDSv2。

Console
要求在現有執行個體上使用 IMDSv2
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取執行個體。

  4. 選擇動作執行個體設定修改執行個體中繼資料選項

  5. 修改執行個體中繼資料選項對話方塊中,執行下列動作:

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

    2. 針對 IMDSv2,請選擇必要

    3. 選擇儲存

AWS CLI
要求在現有執行個體上使用 IMDSv2

使用 modify-instance-metadata-options 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 cmdlet,並將 HttpTokens 參數設定為 required。當您為 HttpTokens 指定值時,您也必須將 HttpEndpoint 設定為 enabled

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

還原使用 IMDSv1

當執行個體需要 IMDSv2 時,使用 IMDSv1 請求將會失敗。當 IMDSv2 為選用時,IMDSv2 和 IMDSv1 都可以運作。因此,若要還原 IMDSv1,請使用下列其中一種方法將 IMDSv2 設定為選用 (httpTokens = optional)。

httpTokensEnforced IMDS 屬性也會防止嘗試在現有執行個體上啟用 IMDSv1。為區域中的帳戶啟用 時,嘗試httpTokens將 設定為 optional會導致UnsupportedOperation例外狀況。如需詳細資訊,請參閱 疑難排解

重要

如果您的執行個體啟動因 IMDSv2 強制執行而失敗,您有兩個選項可以讓啟動成功:

  • 執行個體啟動為IMDSv2-only – 如果在執行個體上執行的軟體僅使用 IMDSv2 (不依賴 IMDSv1),則您只能將執行個體啟動為僅限 IMDSv2。若要這樣做,請在啟動參數httpTokens = required中設定 IMDSv2,或在區域中帳戶的中繼資料預設值中設定 IMDSv2。

  • 停用強制執行 – 如果您的軟體仍然依賴 IMDSv1,disabled請將 區域中帳戶的 httpTokensEnforced設為 。如需詳細資訊,請參閱在帳戶層級強制執行 IMDSv2

Console
在執行個體上還原使用 IMDSv1
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取執行個體。

  4. 選擇動作執行個體設定修改執行個體中繼資料選項

  5. 修改執行個體中繼資料選項對話方塊中,執行下列動作:

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

    2. 針對 IMDSv2,請選擇選用

    3. 選擇儲存

AWS CLI
在執行個體上還原使用 IMDSv1

您可使用 modify-instance-metadata-options 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 cmdlet 與 HttpTokens 設定為 搭配使用,optional以在請求執行個體中繼資料時還原 IMDSv1 的使用。

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

變更 PUT 回應跳轉限制

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

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

AWS CLI
如何變更 PUT 回應跳轉限制

使用 modify-instance-metadata-options 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 cmdlet,並將 HttpPutResponseHopLimit 參數設定為所需的躍點數。在下列範例中,跳轉限制設定為 3。請注意,為 HttpPutResponseHopLimit 指定數值時,您還必須將 HttpEndpoint 設定為 enabled

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

啟用 IMDS IPv4 和 IPv6 端點

IMDS 在執行個體上有兩個端點:IPv4 (169.254.169.254) 和 IPv6 ([fd00:ec2::254])。當您啟用 IMDS 時,IPv4 端點會自動啟用。即使您在僅限 IPv6 的子網路中啟動執行個體,IPv6 端點仍會保持停用狀態。若要啟用 IPv6 端點,則需要明確啟用。當您啟用 IPv6 端點時,IPv4 端點會保持啟用狀態。

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

啟用 IPv6 端點的需求

目前只有 AWS CLI 和 AWS SDKs 支援在執行個體啟動後啟用 IMDS IPv6 端點。

AWS CLI
為您的執行個體啟用 IMDS IPv6 端點

使用 modify-instance-metadata-options 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 cmdlet,並將 HttpProtocolIpv6 參數設定為 enabled。請注意,為 HttpProtocolIpv6 指定數值時,您還必須將 HttpEndpoint 設定為 enabled

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

開啟對執行個體中繼資料的存取

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

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

Console
開啟對執行個體中繼資料的存取
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取執行個體。

  4. 選擇動作執行個體設定修改執行個體中繼資料選項

  5. 修改執行個體中繼資料選項對話方塊中,執行下列動作:

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

    2. 選擇儲存

AWS CLI
開啟對執行個體中繼資料的存取

使用 modify-instance-metadata-options CLI 命令,並將 http-endpoint 參數設定為 enabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567890abcdef0 \ --http-endpoint enabled
PowerShell
開啟對執行個體中繼資料的存取

使用 Edit-EC2InstanceMetadataOption cmdlet,並將 HttpEndpoint 參數設定為 enabled

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

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

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

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

Console
關閉對執行個體中繼資料的存取
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取執行個體。

  4. 選擇動作執行個體設定修改執行個體中繼資料選項

  5. 修改執行個體中繼資料選項對話方塊中,執行下列動作:

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

    2. 選擇儲存

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

使用 modify-instance-metadata-options CLI 命令,並將 http-endpoint 參數設定為 disabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567890abcdef0 \ --http-endpoint disabled
PowerShell
關閉對執行個體中繼資料的存取

使用 Edit-EC2InstanceMetadataOption cmdlet,並將 HttpEndpoint 參數設定為 disabled

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

允許存取執行個體中繼資料中的標籤

您可以允許存取執行中或已停止執行個體上執行個體中繼資料中的標籤。對於每個執行個體,您必須明確允許存取。如果允許存取,則執行個體標籤金鑰必須符合特定字元限制,否則將收到錯誤訊息。如需詳細資訊,請參閱在執行個體中繼資料中啟用標籤存取權

疑難排解

修改IMDSv1-enabled的執行個體失敗

Description

您會收到下列錯誤訊息:

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.

原因

當您嘗試在 EC2 帳戶設定或 AWS Organization 宣告政策強制使用 IMDSv2 () 的帳戶中將現有執行個體修改為啟用 IMDSv1 () 時,就會擲出此錯誤httpTokensEnforced = enabledhttpTokens = optional IMDSv2

解決方案

如果您需要現有執行個體的 IMDSv1 支援,則需要停用 區域中帳戶的 IMDSv2 強制執行。若要停用 IMDSv2 強制執行,請將 HttpTokensEnforced設定為 disabled。如需詳細資訊,請參閱《Amazon EC2 API 參考》中的 ModifyInstanceMetadataDefaults。如果您偏好使用 主控台設定此設定,請參閱 在帳戶層級強制執行 IMDSv2

我們建議您僅使用 IMDSv2 (httpTokens=required)。如需詳細資訊,請參閱轉換為使用 執行個體中繼資料服務第 2 版