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

上次更新日期:2022 年 8 月 5 日

我如何允许 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. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
  3. 选择 AWS service(AWS 服务)角色类型。
  4. Use Case(使用案例)部分中,选择 EC2。然后,选择 Next(下一步)。
  5. 选择默认的 AmazonEC2ContainerServiceforEC2Role 托管策略,然后选择 Next(下一步)。
    注意:AmazonEC2ContainerServiceforEC2Role 策略还允许您将容器实例注册到您的 ECS 集群中并在 Amazon CloudWatch 中启用日志流
  6. 需要时,将标签添加到您的策略中,然后选择 Next(下一步)。
  7. 对于 Role name(角色名称),输入唯一的名称(例如 ECSRoleforEC2),然后选择 Create role(创建角色)。
  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 console(IAM 控制台)。
  2. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
  3. Select type of trusted entity(选择受信任实体的类型)部分,选择 Elastic Container Service
  4. 对于 Select your use case(选择您的使用案例),选择 Elastic Container Service 任务,然后选择 Next(下一步)。
  5. Attach permissions policy(附加权限策略)部分,搜索 AmazonECSTaskExecutionRolePolicy,选择策略,然后选择 Next(下一步)。
    注意:此策略还提供使用 awslogs 日志驱动程序的权限。
  6. 对于角色名称,请输入 ecsTaskExecutionRole,然后选择创建角色
  7. 创建任务定义
    重要提示:在您的任务定义的 containerDefinitions 部分中,将 ECR 映像 aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag 指定为映像属性。指定在第 6 步中创建的 IAM 角色。
  8. 使用您在步骤 7 中创建的任务定义运行任务或服务。

您的任务或服务现在可以从 Amazon ECR 映像存储库中提取映像。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?