如何允许 Amazon ECS 任务从 Amazon ECR 映像存储库拉取映像?

1 分钟阅读
0

如何允许 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 启动类型

  1. 打开 AWS Identity and Access Management(IAM)控制台
  2. 在导航窗格中,选择角色,然后选择创建角色
  3. 选择 AWS 服务角色类型。
  4. 用例部分,选择 EC2。然后,选择下一步
  5. 选择默认 AmazonEC2ContainerServiceforEC2Role 托管策略,然后选择下一步
    注意:AmazonEC2ContainerServiceforEC2Role 策略还允许您向您的 ECS 集群注册容器实例并在 Amazon CloudWatch 中启用日志流
  6. 如果需要,向您的策略添加标签,然后选择下一步
  7. 角色名称中输入一个唯一名称(如 ECSRoleforEC2),然后选择创建角色
  8. 使用最新的 Amazon ECS 优化的 Amazon Linux AMI 启动新的容器实例
  9. 将您创建的角色附加到新容器实例
  10. 创建任务定义
    **重要信息:**在任务定义的 containerDefinitions 部分,将 ECR 映像的 aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag 指定为映像属性。
  11. 使用您在步骤 10 中创建的任务定义运行任务或服务。
  12. (可选)如果您不想为实例配置文件提供权限,则向 ECS 任务执行角色提供权限。然后,使用您在步骤 10 中创建的任务定义运行任务或服务。

对于 Fargate 启动类型

Amazon ECS 任务执行角色将在 Amazon ECS 控制台的首次运行体验中自动创建。如果您未找到该角色或角色被删除,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择角色,然后选择创建角色
  3. 选择可信实体类型部分,选择弹性容器服务
  4. 选择您的用例选择弹性容器服务任务,然后选择下一步
  5. 附加权限策略部分,搜索 AmazonECSTaskExecutionRolePolicy,选择该策略,然后选择下一步。
    **注意:**此策略还提供使用 awslogs 日志驱动程序的权限。
  6. 角色名称中输入 ecsTaskExecutionRole,然后选择创建角色
  7. 创建任务定义
    **重要信息:**在任务定义的 containerDefinitions 部分,将 ECR 映像的 aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag 指定为映像属性。指定在步骤 6 中创建的 IAM 角色。
  8. 使用您在步骤 7 中创建的任务定义运行任务或服务。

现在,您的任务或服务已可以从 Amazon ECR 映像存储库拉取映像了。


相关信息

Using Amazon ECR Images with Amazon ECS

AWS 官方
AWS 官方已更新 2 年前