本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
任务的私有注册表身份验证
通过使用 AWS Secrets Manager 对任务进行私有注册表身份验证,您可以在容器定义中安全地存储并随后引用您的凭证。这样,您的任务就可以使用私有存储库中的映像。使用 Fargate 或 EC2 启动类型的任务支持此功能。
如果您的任务定义引用了存储在 Amazon ECR 中的图像,则此主题不适用。有关更多信息,请参阅 Amazon ECR 中的Amazon ECS将映像与 Amazon Elastic Container Registry 用户指南 结合使用。
对于使用 EC2 启动类型的任务,此功能需要版本 1.19.0 或更高版本的容器代理;但我们建议您使用最新的容器代理版本。有关检查您的代理版本并更新到最新版本的信息,请参阅更新 Amazon ECS 容器代理.
对于使用 Fargate 启动类型的任务,此功能需要平台版本 1.2.0 或更高版本。有关信息,请参阅 AWS Fargate 平台版本.
在容器定义中,使用您创建的密钥的完整 ARN 指定 repositoryCredentials
您引用的密钥可以来自与使用此密钥的任务不同的区域,但必须来自同一个账户。
使用 Amazon ECS API、AWS CLI 或 AWS 开发工具包时,如果密钥存在于要启动的任务所在的区域,可以使用密钥的完整 ARN 或名称。使用 AWS 管理控制台时,必须指定密钥的完整 ARN。
下面是显示必需参数的任务定义代码段:
"containerDefinitions": [ { "image": "
private-repo/private-image
", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
" } } ]
启用私有注册表身份验证的另一种方法使用 Amazon ECS 容器代理环境变量向私有注册表进行身份验证。只有使用 EC2 启动类型的任务才支持此方法。有关更多信息,请参阅容器实例的私有注册表身份验证.
私有注册表身份验证所需的IAM权限
使用此功能需要 Amazon ECS 任务执行角色。这允许容器代理拉取容器映像。有关更多信息,请参阅Amazon ECS 任务执行 IAM 角色.
要提供对您创建的 密钥的访问权限,请将以下权限作为内联策略手动添加到任务执行角色。有关更多信息,请参阅添加和删除 IAM 策略.
-
secretsmanager:GetSecretValue
-
kms:Decrypt
— 仅当密钥使用自定义 KMS 密钥而不是默认密钥时才需要。您的自定义密钥的 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 Managersecretsmanager/https://console.amazonaws.cn/ 打开
. 控制台。 -
选择存储新密钥.
-
对于选择密钥类型,选择其他密钥类型.
-
选择明文并使用以下格式输入您的私有注册表凭证:
{ "username" : "
privateRegistryUsername
", "password" : "privateRegistryPassword
" } -
选择 Next.
-
对于密钥名称,请键入可选的路径和名称,如
production/MyAwesomeAppSecret
或development/TestSecret
,然后选择下一步. 您可以选择添加描述以帮助记住该密钥以后的用途。密钥名称应仅包含 ASCII 字母、数字或以下任意字符:/_+=.@-
-
(可选) 此时,您可以为密钥配置轮换。对于此程序,请将其保留为禁用自动轮换,然后选择下一步.
有关如何为新的或现有的密钥配置轮换的信息,请参阅轮换 AWS Secrets Manager 密钥.
-
检查您的设置,然后选择 Store secret (存储密钥) 以将输入的所有内容作为新密钥保存在 Secrets Manager. 中。
创建使用私有注册表身份验证的任务定义
-
在 https://console.amazonaws.cn/ecs/
上打开 Amazon ECS 控制台。 -
在导航窗格中,选择 Task Definitions.
-
在任务定义页面上,选择 Create new task definition (创建新任务定义)。
-
在 Select launch type compatibility (选择启动类型兼容性) 页面上,选择任务的启动类型,然后选择 Next step (下一步).
注意 此步骤仅适用于当前支持使用 Amazon ECS 的 AWS Fargate. 的区域。有关更多信息,请参阅Amazon ECS,发布时间:AWS Fargate.
-
对于 task definition Name,键入任务定义的名称。 最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。
-
对于 Task execution role (任务执行角色),选择现有任务执行角色,或选择 Create new role (创建新角色) 以为您创建一个角色。此角色授权 Amazon ECS 提取任务的私有映像。有关更多信息,请参阅私有注册表身份验证所需的IAM权限.
重要 如果未显示 Task execution role (任务执行角色) 字段,请选择 Configure via JSON (通过 JSON 配置) 并手动添加
executionRoleArn
字段以指定任务执行角色。下面显示语法:"executionRoleArn": "arn:aws:iam::
aws_account_id
:role/ecsTaskExecutionRole" -
对于您的任务定义中要创建的每个容器,请完成以下步骤:
-
在 Container Definitions (容器定义) 部分,选择 Add container (添加容器).
-
对于 Container name (容器名称),键入容器的名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。
-
对于 Image (映像),键入映像名称或到您私有映像的路径。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。
-
选择 Private repository authentication (私有存储库身份验证) 选项。
-
对于 Secrets manager ARN (密钥管理器 ARN),输入您之前创建的密钥的完整 Amazon 资源名称 (ARN)。值的长度必须介于 20 到 2048 个字符之间。
-
填写剩余的必填字段和要在您的容器定义中使用的任何可选字段。高级容器配置菜单中提供了更多容器定义参数。有关更多信息,请参阅任务定义参数.
-
选择 Add.
-
-
当添加您的容器时,请选择 Create (创建).