用于向 Amazon 中的目标发送事件的 IAM 角色 EventBridge - Amazon EventBridge

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

用于向 Amazon 中的目标发送事件的 IAM 角色 EventBridge

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

创建用于向发送事件的 IAM 角色 EventBridge
  1. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 要创建 IAM 角色,请按照 I A M 用户指南中创建向 AWS 服务委派权限的角色中的步骤操作。在执行这些步骤时,请注意以下操作:

    • 角色名称中,使用账户中的唯一名称。

    • “选择角色类型” 中,选择 “AWS 服务角色”,然后选择 Amazon EventBridge。这会授予担任该角色的 EventBridge 权限。

    • 附加策略中,选择AmazonEventBridgeFullAccess

您也可以创建自己的自定义 IAM 策略以授予 EventBridge 操作和资源的权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。有关 IAM 策略的更多信息,请参阅《IAM 用户指南》中的 IAM 策略概述。有关管理和创建自定义 IAM 策略的更多信息,请参阅《IAM 用户指南》中的管理 IAM 策略

使用 IAM 角色 EventBridge 访问目标所需的权限

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

亚马逊 SQS、Amazon SNS、 CloudWatch Lambda EventBridge 、日志和总线目标不使用角色,必须通过资源 EventBridge 策略授予权限。API Gateway 目标可以使用资源策略或 IAM 角色。

API 目标

如果目标是 API 目标,则您指定的角色必须包含带有以下语句的策略:

  • 效果Allow

  • 操作:events:InvokeApiDestination

  • 资源:arn:aws:events:*:*:api-destination/*

Kinesis Streams

如果目标是 Kinesis 流,则用于向该目标发送事件数据的角色必须包含带有以下语句的策略:

  • 效果Allow

  • 操作:kinesis:PutRecord

  • 资源:*

Systems Manager 运行命令

如果目标是 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]]" ] }

And:

  • 效果Allow

  • 操作:ssm:SendCommand

  • 资源:arn:aws:ssm:us-east-1:*:document/documentName

Step Functions 状态机

如果目标是 AWS Step Functions 状态机,则您指定的角色必须包含具有以下内容的策略:

  • 效果Allow

  • 操作:states:StartExecution

  • 资源:arn:aws:states:*:*:stateMachine:*

Amazon ECS 任务

如果目标是 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 Management Console 来创建带有内置目标的规则。

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

客户管理型策略示例:使用标记来控制对规则的访问权限

以下示例显示了授予 EventBridge 操作权限的用户策略。当您使用 EventBridge API、或,时 AWS SDKs,此政策将起作用 AWS CLI。

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

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

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

有关使用 IAM policy 语句的更多信息,请参阅 IAM 用户指南中的使用策略控制访问