我如何允许 Amazon Elastic Container Service (Amazon ECS) 任务从 Amazon Elastic Container Registry (Amazon ECR) 映像存储库中提取映像?
简短描述
要访问 Amazon ECR 映像存储库与您的启动类型,请选择以下这些选项之一:
- 对于 Amazon Elastic Compute Cloud (Amazon EC2) 启动类型,您必须提供 ecsTaskExecutionRole 或与容器实例关联的实例配置文件的权限。但是,提供 ecsTaskExecutionRole 的 Amazon ECR 权限始终是最佳实践。 如果同时为实例和角色提供了权限,则 ecsTaskExecutionRole 优先。
- 对于 AWS Fargate 启动类型,您必须授予 Amazon ECS 任务执行角色权限来访问 Amazon ECR 映像存储库。
解决方法
对于 EC2 启动类型
- 打开 AWS Identity and Access Management (IAM) 控制台。
- 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
- 选择 AWS service(AWS 服务)角色类型。
- 在 Use Case(使用案例)部分中,选择 EC2。然后,选择 Next(下一步)。
- 选择默认的 AmazonEC2ContainerServiceforEC2Role 托管策略,然后选择 Next(下一步)。
注意:AmazonEC2ContainerServiceforEC2Role 策略还允许您将容器实例注册到您的 ECS 集群中并在 Amazon CloudWatch 中启用日志流。
- 需要时,将标签添加到您的策略中,然后选择 Next(下一步)。
- 对于 Role name(角色名称),输入唯一的名称(例如 ECSRoleforEC2),然后选择 Create role(创建角色)。
- 使用最新的经过 Amazon ECS 优化的 Amazon Linux AMI 启动新的容器实例。
- 将您创建的角色附加到新的容器实例。
- 创建任务定义。
**重要提示:**在您的任务定义的 containerDefinitions 部分中,将 ECR 映像 aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag 指定为映像属性。
- 使用您在步骤 10 中创建的任务定义运行任务或服务。
- (可选)如果您不想为实例配置文件提供权限,请向 ECS 任务执行角色授予权限。使用您在步骤 10 中创建的任务定义运行任务或服务。
对于 Fargate 启动类型
在 Amazon ECS 控制台首次运行体验中自动创建 Amazon ECS 任务执行角色。如果您无法找到该角色或该角色被删除,请完成以下这些步骤:
- 打开 IAM console(IAM 控制台)。
- 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
- 在 Select type of trusted entity(选择受信任实体的类型)部分,选择 Elastic Container Service。
- 对于 Select your use case(选择您的使用案例),选择 Elastic Container Service 任务,然后选择 Next(下一步)。
- 在 Attach permissions policy(附加权限策略)部分,搜索 AmazonECSTaskExecutionRolePolicy,选择策略,然后选择 Next(下一步)。
**注意:**此策略还提供使用 awslogs 日志驱动程序的权限。
- 对于角色名称,请输入 ecsTaskExecutionRole,然后选择创建角色。
- 创建任务定义。
**重要提示:**在您的任务定义的 containerDefinitions 部分中,将 ECR 映像 aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag 指定为映像属性。指定在第 6 步中创建的 IAM 角色。
- 使用您在步骤 7 中创建的任务定义运行任务或服务。
您的任务或服务现在可以从 Amazon ECR 映像存储库中提取映像。
相关信息
将 Amazon ECR 映像用于 Amazon ECS