

# Amazon ECS EventBridge IAM 角色
EventBridge IAM 角色

在您能够将 Amazon ECS 计划任务与 EventBridge 规则和目标配合使用之前，EventBridge 服务需要代表您运行 Amazon ECS 任务的权限。这些权限由 EventBridge IAM 角色（`ecsEventsRole`）提供。

`AmazonEC2ContainerServiceEventsRole` 策略如下所示。

------
#### [ JSON ]

****  

```
{
    "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 角色](task_execution_IAM_role.md)。

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

------
#### [ JSON ]

****  

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

------

配置计划任务时，您可以选择让 Amazon Web Services 管理控制台 创建 EventBridge 角色。有关更多信息，请参阅 [使用 Amazon EventBridge 调度器计划 Amazon ECS 任务](tasks-scheduled-eventbridge-scheduler.md)。

## 创建 EventBridge 角色


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

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

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "events.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 使用以下命令创建一个 IAM 角色，该角色使用您在上一步中创建的信任策略命名为 `ecsEventsRole`。

   ```
   aws iam create-role \
         --role-name ecsEventsRole \
         --assume-role-policy-document file://eventbridge-trust-policy.json
   ```

1. 使用以下命令将 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/](https://console.amazonaws.cn/iam/)）来创建该角色。有关更多信息，请参阅《IAM 用户指南》**中的[使用自定义信任策略创建角色（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

## 将策略附加到 `ecsEventsRole` 角色


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

------
#### [ Amazon Web Services 管理控制台 ]

**使用 JSON 策略编辑器创建策略**

1. 登录Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在左侧的导航窗格中，选择**策略**。

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

1. 在页面的顶部，选择**创建策略**。

1. 在**策略编辑器**部分，选择 **JSON** 选项。

1. 输入以下 JSON 策略文档：

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

1. 选择**下一步**。
**注意**  
您可以随时在**可视化**和 **JSON** 编辑器选项卡之间切换。不过，如果您进行更改或在**可视化**编辑器中选择**下一步**，IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息，请参阅*《IAM 用户指南》*中的[调整策略结构](https://docs.amazonaws.cn/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure)。

1. 在**查看并创建**页面上，为您要创建的策略输入**策略名称**和**描述**（可选）。查看**此策略中定义的权限**以查看策略授予的权限。

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

创建策略后，将策略附加到 EventBridge 角色。有关如何将策略附加到角色的信息，请参阅《Amazon Identity and Access Management 用户指南》中的[更新角色权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_update-role-permissions.html)**。

------
#### [ Amazon CLI ]

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

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

------
#### [ JSON ]

****  

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

------

1. 使用以下 Amazon CLI 命令通过 JSON 策略文档文件创建 IAM 策略。

   ```
   aws iam create-policy \
         --policy-name eventsTaskExecutionPolicy \
         --policy-document file://ev-iam-passrole.json
   ```

1. 使用以下命令检索您创建的 IAM 策略的 ARN。

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`eventsTaskExecutionPolicy`].Arn'
   ```

1. 使用以下命令通过策略 ARN 将策略附加到 EventBridge IAM 角色。

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

------