本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Lightsail 上存取和設定執行個體中繼資料服務 (IMDS)
您可以使用下列任一種方法,從執行中的執行個體存取執行個體中繼資料:
-
執行個體中繼資料服務第 1 版 (IMDSv1) – 請求/回應方法
-
執行個體中繼資料服務第 2 版 (IMDSv2) – 工作階段導向方法
重要
並非所有執行個體藍 Lightsail 支援 ImDSv2。使用
MetadataNoToken
執行個體指標追蹤對於正在使用 IMDSv1 的執行個體中繼資料服務所發出的呼叫次數。如需詳細資訊,請參閱檢視執行個體指標。
依預設,您可以使用 IMDSv1 或 IMDSv2,或兩者。執行個體中繼資料服務會依據任何指定請求中是否存在 IMDSv2 特有的 PUT
或 GET
標頭來區分 IMDSv1 和 IMDSv2 請求。如需詳細資訊,請參閱 透過 EC2 執行個體中繼資料服務的增強功能,提高開放式防火牆、反向代理伺服器及 SSRF (伺服器端請求偽造) 弱點的防禦能力
您可以在每個執行個體上設定執行個體中繼資料服務,此類本機程式碼或使用者必須使用 IMDSv2。當您指定必須使用該 IMDSv2 時,IMDSv1 則無法繼續運作。如需詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的設定執行個體中繼資料選項。
若要擷取執行個體中繼資料,請參閱《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》中的擷取執行個體中繼資料。
注意
本節中的範例使用執行個體中繼資料服務的 IPv4 地址:169.254.169.254
。如果您要從 IPv6 地址上的執行個體擷取執行個體中繼資料,請先確保您已啟用並改用 IPv6 地址:fd00:ec2::254
。執行個體中繼資料服務的 IPv6 地址與 IMDSv2 命令相容。
執行個體中繼資料服務第 2 版 的運作方式
IMDSv2 會使用工作階段導向請求。使用工作階段導向請求,您就能建立定義工作階段持續期間的工作階段字符,此期間最短 1 秒,最長可達 6 小時。在指定持續期間,您可以將相同的工作階段字符用於後續請求。在指定持續期間到期之後,您必須建立新的工作階段字符,才能使用未來請求。
重要
從 Amazon 2023 啟動的 Lightsail 執行個體預設會設定 ImDSv2。
下列範例使用 Linux 和 PowerShell 殼層指令碼和 ImDSv2 來擷取頂層執行個體中繼資料項目。這些範例會執行下列操作:
-
使用
PUT
請求,建立持續六小時 (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 Machine Image (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 錯誤碼。如需變更 Token 使用需求的相關資訊,請參閱《AWS CLI 命令參考》update-instance-metadata-options中的〈〉。-
字符是執行個體特定金鑰。字符在其他執行個體上無效,而且如果您嘗試在產生字符的執行個體外部使用該字符,則會遭到拒絕。
-
PUT
請求必須包含指定字符存留時間 (TTL) 的標頭,時間會以秒數表示。可將 TTL 指定為最多六小時 (21,600 秒)。字符會代表邏輯工作階段。TTL 會指定字符有效的時間長度,也就是工作階段的持續期間。 -
在字符到期後,若要繼續存取執行個體中繼資料,您必須使用另一個
PUT
請求建立新的工作階段。 -
您可以選擇重複使用字符或使用每個請求來建立新字符。對於少量請求,您每次需要存取執行個體中繼資料服務時,就能更輕鬆地產生和立即使用字符。但為了提升效率,您可以為字符指定更長的存留期間,並重複使用該字符,而不用在每次需請求執行個體中繼資料時寫入
PUT
請求。並行字符數量沒有實際限額,每個都代表它自己的工作階段。但 IMDS2 仍會受到正常執行個體中繼資料服務連線和調節限額的限制。如需詳細資訊,請參閱《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》中的查詢限流。
-
HTTP GET
及 HEAD
方法可在 IMDSv2 執行個體中繼資料請求中使用。如果 PUT
請求中包含 X-Forwarded-For
標頭,則會遭到拒絕。
依預設,PUT
請求在 IP 通訊協定等級的 1
回應跳轉限額 (存留時間)。如果需要更大的跳轉限額,您可以使用 update-instance-metadata-options
命令調整跳轉限額。例如,您可以需要較大的跳轉限額,才能與執行個體上執行之容器服務回溯相容。若要取得更多資訊,請參閱《指AWS CLI 令參考》update-instance-metadata-options中的。
轉換為使用 執行個體中繼資料服務第 2 版
可選擇使用 Instance Metadata Service Version 2 (IMDSv2)。Instance Metadata Service Version 1 (IMDSv1) 將持續無限期受到支援。如果您選擇使用 IMDSv2 進行移轉,我們建議您使用下列工具和轉換路徑。
協助轉換至 IMDSv2 的工具
如果您的軟體使用 IMDSv1,請使用下列工作,以協助將您的軟體重新設定為使用 IMDSv2。
-
AWS 軟體:最新版本的 AWS 開發套件和 AWS CLI 支援的 ImDSv2。若要使用 IMDSv2,請確定您的執行個體具有最新版本的 AWS SDK 和. AWS CLI若要取得有關更新的資訊 AWS CLI,請參閱《使用指南》 AWS CLI中的〈安裝、更新和解除安裝AWS Command Line Interface 〉。所有 Amazon Linux 2 軟體套件都支援 IMDSv2。
-
執行個體指標:IMDSv2 使用字符支援的工作階段,而 IMDSv1 不使用。
MetadataNoToken
執行個體指標會追蹤針對正在使用 IMDSv1 的執行個體中繼資料服務所發出的呼叫次數。透過追蹤此指標至零,您可以決定是否要升級所有軟體以使用 IMDSv2 及升級時間。如需詳細資訊,請參閱在 Amazon Lightsail 中檢視執行個體指標。 -
Lightsail API 作業和命 AWS CLI 令的更新:對於現有的執行個體,您可以使用update-instance-metadata-options AWS CLI 命令 (或 UpdateInstanceMetadataOptionsAPI 作業) 來要求使用 ImDSv2。下列是範例命令。確保用實例的名稱替換
InstanceName
為實例的名稱,並使RegionName
用 AWS 區域 您的實例所在的名稱。aws lightsail update-instance-metadata-options --region
RegionName
--instance-nameInstanceName
--http-tokens required
建議路徑需要 IMDSv2 存取
使用上述工具時,我們建議您遵循此路徑來轉換到 IMDSv2:
步驟 1:開始時
將在執行個體上使用角色認證的 AWS SDK AWS CLI、和軟體更新為 IMDSv2 相容版本。若要取得有關更新的資訊 AWS CLI,請參閱《使用指南》 AWS CLI中的〈升級到最新版本AWS Command Line Interface〉。
然後,使用 IMDSv2 要求變更直接存取執行個體中繼資料的軟體 (換句話說,不使用 AWS SDK)。
步驟 2:轉換期間
使用執行個體指標 MetadataNoToken
追蹤您的轉換進度。此指標會顯示對您執行個體上正在使用 IMDSv1 的執行個體中繼資料服務的呼叫次數。如需詳細資訊,請參閱檢視執行個體指標。
步驟 3:所有執行個體上一切都準備就緒時
當執行個體指標 MetadataNoToken
記錄的 IMDSv1 用量為零時,即表示所有執行個體上一切都已準備就緒。在此階段,您可以要求透過指update-instance-metadata-options令使用 IMDSv2。您可以對執行中的執行個體進行這些變更,您也不需要重新啟動執行個體。
更新現有執行個體的執行個體中繼資料選項只能透過 Lightsail API 或. AWS CLI目前無法在 Lightsail 主控台中使用此功能。如需詳細資訊,請參閱update-instance-metadata-options。
其他 IMDS 文件
可在《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》與《適用於 Windows 執行個體的 Amazon Elastic Compute Cloud 使用者指南》中找到以下 IMDS 文件:
注意
在 Amazon EC2 中,執行個體藍圖稱為 Amazon Machine Image (AMI)。
-
對於 Linux 執行個體:
-
對於 Windows 執行個體: