在 Amazon ECS 中使用非AWS 容器映像 - Amazon Elastic Container Service

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

在 Amazon ECS 中使用非AWS 容器映像

使用私有登錄檔將登入資料存放在 中 AWS Secrets Manager,然後在任務定義中參考登入資料。這提供了一種方法,可參考存在於 外部私有登錄檔中的容器映像 AWS ,這些登錄檔需要在您的任務定義中驗證。託管於 Fargate、Amazon EC2 執行個體以及使用 Amazon ECS Anywhere 的外部執行個體上的任務支援此功能。

重要

如果您的任務定義參考存放在 Amazon ECR 中的映像,則此主題不適用。如需詳細資訊,請參閱 《Amazon Elastic Container Registry 使用者指南》中的搭配使用 Amazon ECR 映像與 Amazon ECS

對於託管於 Amazon EC2 執行個體上的任務,此功能要求具備版本 1.19.0 或更新的容器代理程式。不過,我們建議您使用最新版的容器代理程式。如需如何檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS 容器代理程式」。

對於託管於 Fargate 上的任務,此功能需要平台版本 1.2.0 或更新版本。如需相關資訊,請參閱 適用於 Amazon ECS 的 Fargate 平台版本

在您的容器定義內,使用您所建立的秘密的詳細資訊來指定 repositoryCredentials 物件。參考的秘密可以來自與使用任務不同的 AWS 區域 帳戶。

注意

使用 Amazon ECS API AWS CLI或 AWS SDK 時,如果秘密與您啟動 AWS 區域 的任務位於相同的 中,您可以使用秘密的完整 ARN 或名稱。如果此秘密已存在於不同帳戶中,則必須指定秘密的完整 ARN。使用 時 AWS Management Console,一律必須指定秘密的完整 ARN。

以下是任務定義的程式碼片段,其會顯示所需的參數:

取代下列參數:

  • 具有私有儲存庫主機名稱的 private-repo

  • 具有映像名稱的 private-image

  • arn:aws:secretsmanager:region:aws_account_id:secret:secret_name 搭配秘密 Amazon Resource Name (ARN)

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
注意

啟用私有登錄檔身分驗證的另一個方法,是使用 Amazon ECS 容器代理程式環境變數來向私有登錄檔進行身分驗證。只有託管於 Amazon EC2 執行個體上的任務才支援此方法。如需詳細資訊,請參閱為私有 Docker 映像設定 Amazon ECS 容器執行個體

使用私有登錄檔
  1. 任務定義必須具有任務執行角色。這可讓容器代理程式提取容器映像。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色

    若要將存取提供給您建立的秘密,請將以下許可字作為內嵌政策,新增到任務執行角色。如需詳細資訊,請參閱新增和移除 IAM 政策

    • secretsmanager:GetSecretValue

    • kms:Decrypt - 只有在您的金鑰使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 Amazon Resource Name (ARN) 必須新增為資源。

    下列為新增許可的內嵌政策範例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }
  2. 使用 為您的私有登錄檔登入資料 AWS Secrets Manager 建立秘密。如需有關如何建立秘密的資訊,請參閱AWS Secrets Manager 《 使用者指南》中的建立 AWS Secrets Manager 秘密

    使用下列格式輸入您的私有登錄檔登入資料:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  3. 註冊任務定義。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義