本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon 中使用非AWS 容器映像 ECS
使用私有登錄檔將登入資料存放在 中 AWS Secrets Manager,然後在任務定義中參考登入資料。這可讓您參考存在於 外部私有登錄檔中的容器映像 AWS ,而這些登錄檔需要在您的任務定義中進行身分驗證。Fargate、Amazon EC2執行個體和使用 Amazon ECS Anywhere 的外部執行個體上託管的任務支援此功能。
重要
如果您的任務定義參考存放在 Amazon 中的映像ECR,則此主題不適用。如需詳細資訊,請參閱《Amazon Elastic Container Registry 使用者指南》中的將 Amazon ECR Images 與 ECS Amazon 搭配使用。
對於在 Amazon EC2執行個體上託管的任務,此功能需要 或更新版本1.19.0
的容器代理程式。不過,我們建議您使用最新版的容器代理程式。如需如何檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS容器代理程式」。
對於託管於 Fargate 上的任務,此功能需要平台版本 1.2.0
或更新版本。如需相關資訊,請參閱 適用於 Amazon 的 Fargate 平台版本 ECS。
在您的容器定義內,使用您所建立的秘密的詳細資訊來指定 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容器執行個體 。
使用私有登錄檔
-
任務定義必須具有任務執行角色。這可讓容器代理程式提取容器映像。如需詳細資訊,請參閱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" ] } ] }
-
-
使用 為您的私有登錄檔登入資料 AWS Secrets Manager 建立秘密。如需如何建立秘密的詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的建立 AWS Secrets Manager 秘密。
使用下列格式輸入您的私有登錄檔登入資料:
{ "username" : "
privateRegistryUsername
", "password" : "privateRegistryPassword
" } -
註冊任務定義。如需詳細資訊,請參閱使用主控台建立 Amazon ECS任務定義。