Amazon ECS EventBridge IAM 角色 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon ECS EventBridge IAM 角色

在使用带有 EventBridge 规则和目标的 Amazon ECS 计划任务之前,该 EventBridge 服务需要权限才能代表您运行 Amazon ECS 任务。这些权限是由 EventBridge IAM 角色 (ecsEventsRole) 提供的。

AmazonEC2ContainerServiceEventsRole 策略如下所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:RunTask"], "Resource": ["*"] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["*"], "Condition": { "StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"} } }, { "Effect": "Allow", "Action": "ecs:TagResource", "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": ["RunTask"] } } } ] }

如果您的计划任务需要使用任务执行角色、任务角色或任务角色替代,则必须向 EventBridge IAM 角色添加每个任务执行角色、任务角色或任务角色覆盖的iam:PassRole权限。有关任务执行角色的更多信息,请参阅Amazon ECS 任务执行 IAM 角色

注意

指定您的任务执行角色或任务角色覆盖的完整 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }

在配置计划任务时,您可以选择让 EventBridge 角色为您 Amazon Web Services Management Console 创建。有关更多信息,请参阅Amazon ECS 调度任务

创建 Amazon ECS EventBridge (ecsEventsRole) 角色

用您自己的信息替换所有用户输入

  1. 创建一个名为 eventbridge-trust-policy.json 的文件,其中包含要用于 IAM 角色的信任策略。该文件应包含以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 使用以下命令使用您在上一步中创建ecsEventsRole的信任策略创建名为的 IAM 角色。

    aws iam create-role \ --role-name ecsEventsRole \ --assume-role-policy-document file://eventbridge-policy.json
  3. 使用以下命令AmazonEC2ContainerServiceEventsRole将 Amazon 托管附加到ecsEventsRole角色。

    aws iam attach-role-policy \ -\-role-name ecsEventsRole \ -\-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceEventsRole

您也可以使用 IAM 控制台的自定义信任策略工作流程 (https://console.aws.amazon.com/iam/) 来创建角色。有关更多信息,请参阅 IAM 用户指南中的使用自定义信任策略(控制台)创建角色

将策略附加到 ecsEventsRole 角色

您可以使用以下过程向 EventBridge IAM 角色添加任务执行角色的权限。

Amazon Web Services Management Console
使用 JSON 策略编辑器创建策略
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择策略

    如果这是您首次选择策略,则会显示 Welcome to Managed Policies 页面。选择开始使用

  3. 在页面的顶部,选择创建策略

  4. 策略编辑器部分,选择 JSON 选项。

  5. 输入以下 JSON 策略文档:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }
  6. 选择下一步

    注意

    您可以随时在可视化JSON 编辑器选项卡之间切换。不过,如果您进行更改或在可视化编辑器中选择下一步,IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《IAM 用户指南》中的调整策略结构

  7. 查看并创建页面上,为您要创建的策略输入策略名称描述(可选)。查看此策略中定义的权限以查看策略授予的权限。

  8. 选择创建策略可保存新策略。

创建策略后,将该策略附加到该 EventBridge 角色。有关如何将策略附加到角色的信息,请参阅《Amazon Identity and Access Management 用户指南》中的修改角色权限策略(控制台)

Amazon CLI

用您自己的信息替换所有用户输入

  1. 使用以下内容创建名为 ev-iam-passrole.json 的文件。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }
  2. 使用以下 Amazon CLI 命令使用 JSON 策略文档文件创建 IAM 策略。

    aws iam create-policy \ --policy-name eventsTaskExecutionPolicy \ --policy-document file://ev-iam-passrole.json
  3. 使用以下命令检索您创建的 IAM 策略的 ARN。

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`eventsTaskExecutionPolicy`].Arn'
  4. 使用以下命令通过策略 ARN 将策略附加到 EventBridge IAM 角色。

    aws iam attach-role-policy \ --role-name ecsEventsRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/eventsTaskExecutionPolicy