Amazon ECS EventBridge IAM 角色 - Amazon Elastic Container Service

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>"] } ] }

配置计划任务时,您可以选择让 AWS 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. 使用以下命令将 AWS 托管 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 角色。

AWS Management Console
使用 JSON 策略编辑器创建策略
  1. 登录AWS 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 角色。有关如何将策略附加到角色的信息,请参阅《AWS Identity and Access Management 用户指南》中的修改角色权限策略(控制台)

AWS 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. 使用以下 AWS 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