本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
修改現有執行個體的執行個體中繼資料選項
您可以修改現有執行個體的執行個體中繼資料選項。
您也可以建立 IAM 政策,以防止使用者修改現有執行個體上的執行個體中繼資料選項。若要控制哪些使用者可以修改執行個體中繼資料選項,請指定一個政策,以防止具有指定角色的使用者以外的所有使用者使用 ModifyInstanceMetadataOptions API。如需 IAM 政策範例,請參閱使用執行個體中繼資料。
如果使用宣告式政策來設定執行個體中繼資料選項,則您無法直接在帳戶內進行修改。如需詳細資訊,請參閱「AWS Organizations 使用者指南」中的宣告式政策。
需要使用 IMDSv2
使用下列其中一種方法來修改現有執行個體上的執行個體中繼資料選項,以便在請求執行個體中繼資料時要求 IMDSv2。當要求 IMDSv2 時,就無法使用 IMDSv1。
在要求使用 IMDSv2 之前,請確定執行個體並未進行 IMDSv1 呼叫。MetadataNoToken CloudWatch 指標會追蹤 IMDSv1 呼叫。當 MetadataNoToken 將執行個體的 IMDSv1 使用量記錄為零時,則執行個體準備好需要 IMDSv2。
- Console
-
- 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
-
- 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 端點。
目前只有 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
-
- 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
-
- 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 = enabled。httpTokens = optional IMDSv2
解決方案
如果您需要現有執行個體的 IMDSv1 支援,則需要停用 區域中帳戶的 IMDSv2 強制執行。若要停用 IMDSv2 強制執行,請將 HttpTokensEnforced設定為 disabled。如需詳細資訊,請參閱《Amazon EC2 API 參考》中的 ModifyInstanceMetadataDefaults。如果您偏好使用 主控台設定此設定,請參閱 在帳戶層級強制執行 IMDSv2。
我們建議您僅使用 IMDSv2 (httpTokens=required)。如需詳細資訊,請參閱轉換為使用 執行個體中繼資料服務第 2 版。