Amazon ECS EventBridge IAM 角色 - Amazon Elastic Container Service

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

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 角色为您 AWS 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将 AWS 托管附加到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. 在左侧的导航窗格中,选择策略

    如果这是您首次选择策略,则会显示 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 角色。有关如何将策略附加到角色的信息,请参阅《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