

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

# 用于向 Amazon 中的目标发送事件的 IAM 角色 EventBridge
<a name="eb-events-iam-roles"></a>

要将事件传递给目标， EventBridge 需要一个 IAM 角色。

**创建用于向发送事件的 IAM 角色 EventBridge**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 要创建 IAM 角色，请按照 I [A *M 用户指南*中创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)中的步骤操作。在执行这些步骤时，请注意以下操作：
   + 在**角色名称**中，使用账户中的唯一名称。
   + 在 **“选择角色类型**” 中，选择 “**AWS 服务角色**”，然后选择 **Amazon EventBridge**。这会授予担任该角色的 EventBridge 权限。
   + 在**附加策略**中，选择**AmazonEventBridgeFullAccess**。

您也可以创建自己的自定义 IAM 策略以授予 EventBridge 操作和资源的权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。有关 IAM 策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。有关管理和创建自定义 IAM 策略的更多信息，请参阅《IAM 用户指南》**中的[管理 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

## 使用 IAM 角色 EventBridge 访问目标所需的权限
<a name="eb-target-permissions"></a>

EventBridge 目标通常需要授予调用目标权限 EventBridge 的 IAM 角色。以下是各种 AWS 服务和目标的一些示例。对于其他人，请使用 EventBridge 控制台创建规则并创建一个新角色，该角色将使用预先配置了范围明确的权限的策略来创建。

亚马逊 SQS、亚马逊 SNS 和 Lambda 目标同时支持 IAM 执行角色和基于资源的策略。 CloudWatch 日志和 EventBridge 总线目标不使用角色， EventBridge 必须通过资源策略授予权限。API Gateway 目标可以使用资源策略或 IAM 角色。

### API 目标
<a name="eb-target-permissions-apid"></a>

如果目标为 API 目的地，则指定的角色必须包含具有以下声明的策略：
+ **效果**：`Allow`
+ **操作：**`events:InvokeApiDestination`
+ **资源：**`arn:aws:events:*:*:api-destination/*`

### Kinesis Streams
<a name="eb-target-permissions-kinesis"></a>

如果目标为 Kinesis 流，则用于向该目标发送事件数据的角色必须包含具有以下声明的策略：
+ **效果**：`Allow`
+ **操作：**`kinesis:PutRecord`
+ **资源：**`*`

### Systems Manager 运行命令
<a name="eb-target-permissions-sys"></a>

如果目标为 Systems Manager 运行命令，且您为该命令指定了一个或多个 `InstanceIds` 值，则指定的角色必须包含具有以下声明的策略：
+ **效果**：`Allow`
+ **操作：**`ssm:SendCommand`
+ **资源:** `arn:aws:ec2:{{us-east-1}}:{{accountId}}:instance/{{instanceIds}}`, `arn:aws:ssm:{{us-east-1}}:*:document/{{documentName}}` 

如果目标为 Systems Manager 运行命令，且您为该命令指定了一个或多个标签，则指定的角色必须包含具有以下两项操作的策略：
+ **效果**：`Allow`
+ **操作：**`ssm:SendCommand`
+ **资源：**`arn:aws:ec2:{{}}:{{accountId}}:instance/*`
+ **状况：**

  ```
  "StringEquals": {
    "ec2:ResourceTag/*": [
      "[[tagValues]]"
    ]
  }
  ```

以及：
+ **效果**：`Allow`
+ **操作：**`ssm:SendCommand`
+ **资源：**`arn:aws:ssm:{{us-east-1}}:*:document/{{documentName}}`

### Step Functions 状态机
<a name="eb-target-permissions-step-functions"></a>

如果目标是 AWS Step Functions 状态机，则您指定的角色必须包含具有以下内容的策略：
+ **效果**：`Allow`
+ **操作：**`states:StartExecution`
+ **资源：**`arn:aws:states:*:*:stateMachine:*`

### Amazon ECS 任务
<a name="eb-target-permissions-ec2"></a>

如果目标是 Amazon ECS 任务，则您指定的角色必须包含以下策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:*:{{111122223333}}:task-definition/{{task-definition-name}}"
            ],
            "Condition": {
                "ArnLike": {
                    "ecs:cluster": "arn:aws:ecs:*:{{111122223333}}:cluster/{{cluster-name}}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "ecs-tasks.amazonaws.com"
                }
            }
        }
    ]
}
```

------

以下策略允许中的 EventBridge 内置目标代表您执行 Amazon EC2 操作。您需要使用 AWS 管理控制台 来创建带有内置目标的规则。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TargetInvocationAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:RebootInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances",
                "ec2:CreateSnapshot"
            ],
            "Resource": "*"
        }
    ]
}
```

------

以下政策允许 EventBridge 将事件中继到您账户中的 Kinesis 直播。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KinesisAccess",
            "Effect": "Allow",
            "Action": [
                "kinesis:PutRecord"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Customer-managed 策略示例：使用标记控制对规则的访问权限
<a name="eb-customer-managed-policies"></a>

以下示例显示了授予 EventBridge 操作权限的用户策略。当您使用 EventBridge API、 AWS 软件开发工具包或。 AWS CLI

您可以授予用户访问特定 EventBridge 规则的权限，同时阻止他们访问其他规则。要实现此目标，请标记这两组规则，并使用 IAM 策略引用这些标签。有关为 EventBridge 资源添加标签的更多信息，请参阅[在 Amazon 中为资源添加标签 EventBridge](eb-tagging.md)。

您可以向用户授予 IAM 策略，仅允许其访问带有特定标签的规则。您可以用这个特定标签来标记所选规则，为它们授予访问权限。例如，以下策略仅向某用户授予对标签键 `Stack` 值为 `Prod` 的规则的访问权限。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "events:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Stack": "Prod"
                }
            }
        }
    ]
}
```

有关使用 IAM policy 语句的更多信息，请参阅 *IAM 用户指南*中的[使用策略控制访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html)。