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

Amazon ECS EventBridge IAM 角色

在您能够将 Amazon ECS 计划任务与 EventBridge 规则和目标配合使用之前,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"] } } } ] }

如果计划任务需要使用任务执行角色、任务角色或任务角色覆盖,则必须将每个任务执行角色、任务角色或任务角色覆盖的 iam:PassRole 权限添加到 EventBridge IAM 角色。有关任务执行角色的更多信息,请参阅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>"] } ] }

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

创建 EventBridge 角色

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

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

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

    aws iam create-role \ --role-name ecsEventsRole \ --assume-role-policy-document file://eventbridge-policy.json
  3. 使用以下命令将 Amazon 托管 AmazonEC2ContainerServiceEventsRole 附加到 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. 在左侧的导航窗格中,选择策略

    如果这是您首次选择策略,则会显示欢迎访问托管式策略页面。选择开始使用

  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