将 Amazon ECR 映像与 Amazon ECS 结合使用
您可以使用 Amazon ECR 私有存储库来托管容器镜像和构件,您的 Amazon ECS 任务可能会从中提取这些镜像和构件。为此,Amazon ECS 或 Fargate 容器代理必须有进行 ecr:BatchGetImage
、ecr:GetDownloadUrlForLayer
或 ecr:GetAuthorizationToken
API 调用的权限。
所需的 IAM 权限
下表显示了每种启动类型要使用的 IAM 角色,该角色为您的任务从 Amazon ECR 私有存储库提取提供了所需的权限。Amazon ECS 提供包括所需权限的托管 IAM 策略。
启动类型 | IAM 角色 | Amazon 托管 IAM policy |
---|---|---|
Amazon EC2 实例上的 Amazon ECS |
使用容器实例 IAM 角色,该角色与注册到 Amazon ECS 集群的 Amazon EC2 实例相关联。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的容器实例 IAM 角色。 |
有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 AmazonEC2ContainerServiceforEC2Role |
Fargate 上的 Amazon ECS |
使用您在 Amazon ECS 任务定义中引用的任务执行 IAM 角色。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的任务执行 IAM 角色。 |
有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 AmazonECSTaskExecutionRolePolicy。 |
外部实例上的 Amazon ECS |
使用容器实例 IAM 角色,该角色与注册到 Amazon ECS 集群的本地服务器或虚拟机(VM)相关联。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的容器实例 Amazon ECS 角色。 |
有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 AmazonEC2ContainerServiceforEC2Role。 |
重要
Amazon 托管 IAM policy 包含您可能不需要使用的额外权限。在这种情况下,这些是从 Amazon ECR 私有存储库提取所需的最低权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
在 Amazon ECS 任务定义中指定 Amazon ECR 镜像
创建 Amazon ECS 任务定义时,您可以指定在 Amazon ECR 私有存储库中托管的容器镜像。在任务定义中,确保对您的 Amazon ECR 镜像使用完整的 registry/repository:tag
命名。例如:aws_account_id
.dkr.ecr.region
.amazonaws.com/
。my-repository
:latest
以下任务定义代码段显示了用于指定在 Amazon ECS 任务定义中的 Amazon ECR 中托管的容器映像的语法。
{ "family": "
task-definition-name
", ... "containerDefinitions": [ { "name": "container-name
", "image": "
aws_account_id
.dkr.ecr.region
.amazonaws.com/
", ... } ], ... }my-repository
:latest