在 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 Linux 平台版本

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

注意

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

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

私有存儲庫主機名稱和私有映像檔名稱替換有回購。

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

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