本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon ECS 中使用非AWS 容器映像
使用私有登錄檔將您的登入資料存放在 中 AWS Secrets Manager,然後在任務定義中參考它們。這可讓您參考存在於 外部私有登錄檔中的容器映像 AWS ,而這些登錄檔需要在您的任務定義中進行身分驗證。託管於 Fargate、Amazon EC2 執行個體以及使用 Amazon ECS Anywhere 的外部執行個體上的任務支援此功能。
重要
如果您的任務定義參考存放在 Amazon ECR 中的映像,則此主題不適用。如需詳細資訊,請參閱 Amazon Elastic Container Registry User Guide 中的 Using Amazon ECR Images with 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 管理主控台,一律必須指定秘密的完整 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 容器執行個體 。
使用私有登錄檔
-
任務定義必須具有任務執行角色。這可讓容器代理程式提取容器映像。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色。
私有登錄檔身分驗證可讓您的 Amazon ECS 任務從需要身分驗證憑證的 AWS (例如 Docker Hub、Quay.io 或您自己的私有登錄檔) 外部的私有登錄檔提取容器映像。此功能透過 Secrets Manager 安全地儲存登錄檔憑證,這些憑證隨後會在任務定義中透過
repositoryCredentials參數進行引用。如需設定私有登錄檔身分驗證的詳細資訊,請參閱在 Amazon ECS 中使用非AWS 容器映像。
若要存取內含私有登錄檔憑證的秘密,請將以下許可以內嵌政策形式新增至任務執行角色。如需詳細資訊,請參閱新增和移除 IAM 政策。
-
secretsmanager:GetSecretValue– 從 Secrets Manager 擷取私有登錄檔憑證時需要。 -
kms:Decrypt- 只有在您的秘密使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 Amazon Resource Name (ARN) 必須新增為資源。
下列為新增許可的內嵌政策範例。
-
-
使用 AWS Secrets Manager 為您的私有登錄檔登入資料建立秘密。如需有關如何建立秘密的資訊,請參閱 AWS Secrets Manager User Guide 中的 Create an AWS Secrets Manager secret。
按照下列格式輸入私有登錄檔憑證:
{ "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" } -
註冊任務定義。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義。