當我嘗試在 Amazon Elastic Container Service (Amazon ECS) 放置使用 AWS Secrets Manager 機密的任務時,出現錯誤。
簡短描述
當您無法在 Amazon ECS 放置利用 Secrets Manager 機密的任務時,您可能會收到下列其中一個錯誤:
「Amazon Elastic Compute Cloud (Amazon EC2) 的 AWS Fargate AccessDenied 錯誤的 ResourceInitializationError 錯誤」
「任務無法從 Secrets Manager 擷取機密並失敗。」
由於以下原因之一,您會收到這些錯誤訊息:
- Amazon ECS 任務執行角色沒有存取 Secrets Manager 機密所需的許可。
- Secrets Manager 找不到指定的機密。
- 機密的名稱以連字號後跟六個字元結尾。當您利用部分 ARN 搜尋機密時,這會傳回非預期結果。
- 您的 Amazon Virtual Private Cloud (Amazon VPC) 聯網組態存在問題。
使用 AWSSupport-TroubleshootECSTaskFailedToStart Runbook 對無法啟動的 Amazon ECS 任務錯誤進行疑難排解。然後,請參閱相關疑難排解步驟,了解您的問題。
解決方案
重要事項:
- 在與 ECS 叢集資源位置相同的 AWS 區域使用 AWSSupport-TroubleshootECSTaskFailedToStart Runbook。
- 當使用 Runbook 時,您必須利用最近失敗的任務 ID。如果失敗的任務屬於 Amazon ECS 服務,請在服務利用最近期失敗的任務。失敗的任務在自動執行期間必須在 ECS:DescribeTasks 可見。預設情況下,已停止的 ECS 任務會在進入已停止狀態後 1 小時內可見。利用最近期失敗的任務 ID 可防止任務狀態清除在自動化期間中斷分析。
如需如何啟動 Runbook 的指示,請參閱 AWSSupport-TroubleshootECSTaskFailedToStart。根據自動化輸出,利用下列其中一個手動疑難排解步驟。
請檢查 ECS 任務執行角色是否具有必要的許可
- 開啟 IAM 主控台。
- 在導覽窗格,選擇角色。
- 搜尋 ECS 任務正在使用的任務執行角色的角色清單。
- 確認任務執行角色具有存取必要的 Secrets Manager 資源所需的許可。
請檢查 Secrets Manager 機密是否存在
- 開啟 Secrets Manager 主控台。
- 在機密清單頁面上,選擇 ECS 任務使用的機密。
- 確認您的 ECS 任務定義包含這些特定機密名稱。如果您在機密指定了其他參數,請確認您的任務定義包含機密指定的 json-key/version-stage/version-id。
請檢查 Secrets Manager 機密的名稱和 ARN
請檢查機密名稱是否以連字號後跟六個字元結尾 (例如:myappsecret-xxxxxx)。Secrets Manager 會在 ARN 的機密名稱末尾自動新增一個連字符和六個隨機字元。因此,機密名稱末尾最好不要利用連字號後跟六個字元。當您利用部分 ARN 搜尋密碼時,這樣做可能會傳回非預期結果。若要解決此問題,請確保利用完整的 ARN,包括 Secrets Manager 機密額外的連字號和六個字元。
驗證您的 VPC 聯網組態是否允許 Amazon ECS 基礎設施連線 Secrets Manager
滿足下列條件時會為 Secrets Manager 建立介面 VPC 端點:
- 您正在利用參考 Secrets Manager 機密的任務定義,來擷取容器的敏感資料。
- 您正在利用介面 VPC 端點。
此外,請確保 VPC 端點的安全群組允許 ECS 基礎設施利用這些端點。
若要檢查 Secrets Manager 的 VPC 端點是否存在,請執行以下操作:
- 開啟 Amazon VPC 主控台。
- 在導覽窗格,選擇端點。
- 請確保 Secrets Manager 的 VPC 端點 com.amazonaws.example-region.secretsmanager 位於端點清單。
- 從端點清單選取端點,然後選擇子網路索引標籤。請確保此端點的子網路包含 ECS 任務使用的子網路。
注意: 如果未列出任何子網路,則選擇管理子網路。根據子網路的可用區域選取子網路,然後選擇修改子網路。
若要確認連接至端點 com.amazonaws.example-region.secretsmanager 的安全群組是否允許 Amazon ECS 任務在連接埠 443 的傳入連線,請執行以下操作:
- 從端點清單選取端點。
- 選擇安全群組索引標籤。
- 選擇要檢查的安全群組的群組 ID。
- 選擇傳入規則索引標籤。
- 確認傳入規則清單是否包含允許 ECS 任務的 443 連線規則。
相關資訊
如何將機密或敏感資訊安全地傳遞至 Amazon ECS 任務的容器?
對 AWS Secrets Manager 進行疑難排解