本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
任务的私有注册表身份验证
使用私有注册表将您的证书存储在中 Amazon Secrets Manager,然后在任务定义中引用它们。这提供了一种引用私有注册表中存在的容器镜像的方法 Amazon ,这些镜像需要在任务定义中进行身份验证。在 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
或更高版本。有关信息,请参阅 Fargate Linux 平台版本。
在容器定义中,使用您创建的密钥的详细信息指定 repositoryCredentials
对象。您引用的密钥可以来自与使用它的任务不同的帐户, Amazon Web Services 区域 也可以来自不同的帐户。
注意
使用 Amazon ECS API 或 Amazon SDK 时,如果密钥与您启动的任务 Amazon Web Services 区域 相同,则可以使用密钥的完整 ARN 或名称。 Amazon CLI如果密钥存在于另一个账户中,则必须指定密钥的完整 ARN。使用时 Amazon Web Services 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 任务执行角色。这允许容器代理拉取容器映像。有关更多信息,请参阅Amazon ECS 任务执行 IAM 角色。
要提供对您创建的密钥的访问权限,请将以下权限作为内联策略添加到任务执行角色。有关更多信息,请参阅添加和删除 IAM policy。
-
secretsmanager:GetSecretValue
-
kms:Decrypt
- 仅当密钥使用自定义 KMS 密钥而不是原定设置密钥时才需要。您的自定义密钥的 Amazon 资源名称(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" ] } ] }
-
-
Amazon Secrets Manager 用于为您的私有注册表凭证创建密钥。有关如何创建密钥的信息,请参阅Amazon Secrets Manager 用户指南中的创建 Amazon Secrets Manager 密钥。
使用以下格式输入您的私有注册表凭证:
{ "username" : "
privateRegistryUsername
", "password" : "privateRegistryPassword
" } -
注册任务定义。有关更多信息,请参阅使用控制台创建任务定义。