如何對 Amazon ECS 的 AWS Secrets Manager 機密相關問題進行疑難排解?

2 分的閱讀內容
0

當我嘗試在 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 任務執行角色是否具有必要的許可

  1. 開啟 IAM 主控台
  2. 在導覽窗格,選擇角色
  3. 搜尋 ECS 任務正在使用的任務執行角色的角色清單。
  4. 確認任務執行角色具有存取必要的 Secrets Manager 資源所需的許可。

請檢查 Secrets Manager 機密是否存在

  1. 開啟 Secrets Manager 主控台
  2. 機密清單頁面上,選擇 ECS 任務使用的機密。
  3. 確認您的 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 端點是否存在,請執行以下操作:

  1. 開啟 Amazon VPC 主控台
  2. 在導覽窗格,選擇端點
  3. 請確保 Secrets Manager 的 VPC 端點 com.amazonaws.example-region.secretsmanager 位於端點清單。
  4. 從端點清單選取端點,然後選擇子網路索引標籤。請確保此端點的子網路包含 ECS 任務使用的子網路。
    注意: 如果未列出任何子網路,則選擇管理子網路。根據子網路的可用區域選取子網路,然後選擇修改子網路

若要確認連接至端點 com.amazonaws.example-region.secretsmanager 的安全群組是否允許 Amazon ECS 任務在連接埠 443 的傳入連線,請執行以下操作:

  1. 從端點清單選取端點。
  2. 選擇安全群組索引標籤。
  3. 選擇要檢查的安全群組的群組 ID
  4. 選擇傳入規則索引標籤。
  5. 確認傳入規則清單是否包含允許 ECS 任務的 443 連線規則。

相關資訊

如何將機密或敏感資訊安全地傳遞至 Amazon ECS 任務的容器?

對 AWS Secrets Manager 進行疑難排解

AWS 官方
AWS 官方已更新 1 年前