本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon 中的事件总线目标 EventBridge
目标是一种资源或端点,当事件与为规则定义的事件模式相匹配时,它会将事件 EventBridge 发送到该资源或端点。规则会处理事件数据,并将相关信息发送给目标。要将事件数据传送到目标, EventBridge 需要访问目标资源的权限。您最多可以为每条规则定义五个目标。
当您将目标添加到规则,之后该规则很快运行,可能不会立即调用新的或更新的目标。请稍等片刻,以便更改生效。
EventBridge控制台中提供事件总线目标
您可以在 EventBridge 控制台中为规则配置以下目标类型:
API 目标
API 目标属于 HTTPS 端点,您可以将其作为事件总线规则的目标进行调用。当您将 API 目标指定为规则目标时,会为任何与规则中指定的事件模式匹配的事件 EventBridge 调用 HTTPS 终端节点,然后随请求提供事件信息。有关更多信息,请参阅 API 目标。
事件总线
您可以将其他事件总线指定为规则的目标。这包括相同或不同 AWS 账户中的事件总线。
AWS 服务
您可以将事件 EventBridge 发送到多个 AWS 服务资源。这些方法包括:
-
CodePipeline
-
Amazon EBS
CreateSnapshotAPI 调用 -
EC2 Image Builder
-
EC2
RebootInstancesAPI 调用 -
EC2
StopInstancesAPI 调用 -
EC2
TerminateInstancesAPI 调用 -
Firehose 传输流
-
Glue 工作流
-
Inspector 评估模板
-
Kinesis 流
-
Lambda 函数(异步)
-
SageMaker AI 管道
-
亚马逊 SNS 主题
-
Step Functions 状态机(异步)
-
Systems Manager Automation
-
Systems Manager OpsItem
-
Systems Manager 运行命令
目标参数
有些目标不会将事件负载中的信息发送给目标,而是将事件视为调用特定 API 的触发器。 EventBridge 使用 Targe t 参数来确定该目标会发生什么。这些功能包括:
-
API 目标
发送到 API 目标的数据必须与 API 的结构相匹配。使用
InputTransformer对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在InputTransformer中引用它。 -
API Gateway
发送到 API Gateway 的数据必须与 API 的结构相匹配。使用
InputTransformer对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在InputTransformer中引用它。 -
亚马逊 EC2 Image Builder
-
Amazon Redshift 数据 API 集群
-
Amazon SageMaker 运行时模型构建管道
-
亚马逊 SQS 博览会和 FIFO 队列
使用
SqsParameters指定要用作目标的消息组。
注意
EventBridge 不支持所有 JSON Path 语法并在运行时对其进行评估。支持的语法包括:
点表示法(例如
$.detail)短划线
下划线
字母数字字符
数组索引
通配符 (*)
动态路径参数
动态路径参数允许您在运行时使用 JSON 路径语法来引用事件数据,而不是静态值。
您可以使用带有目标参数的动态 JSON 路径语法来指定 JSON 路径而不是静态值(例如$.detail.state)。
要求
整个值必须是 JSON 路径,而不仅仅是其中的一部分。例如:
-
✓ 正确:
RedshiftParameters.Sql可以$.detail.state -
✗ 不正确:
RedshiftParameters.Sql不能"SELECT * FROM $.detail.state"
EventBridge 在运行时将这些路径替换为来自指定路径的事件负载的数据。
限制
动态路径参数不能引用输入转换中的新值或转换后的值。JSON 路径语法与输入转换语法相同。有关更多信息,请参阅 Amazon EventBridge 输入转换。
支持的参数
你可以对这些参数的所有字符串、非枚举字段使用动态语法:
-
HttpParameters(HeaderParameters键除外)
Permissions
要对您拥有的资源进行 API 调用, EventBridge 需要适当的权限。使用 EventBridge控制台或通过在中设置RoleARN参数来指定 IAM 执行角色PutTargets。
例如,以下策略定义了向 Amazon SQS 队列发送消息的权限:
以下信任策略允许代 EventBridge 入该角色:
您可以使用已配置的 IAM 授权调用 API Gateway 端点,但如果您尚未配置授权,该角色是可选的。有关更多信息,请参阅 亚马逊 EventBridge 和 AWS Identity and Access Management。
如果另一账户在同一区域中,并且已授予您权限,您可以向该账户发送事件。
有关更多信息,请参阅 在 Amazon AWS 账户之间发送和接收事件 EventBridge。
如果您的目标(例如 Amazon SQS 队列)使用 AWS Key Management Service (AWS KMS) 加密,则必须在 KMS 密钥策略中包含以下部分:
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
AWS Batch 任务队列作为目标
某些参数 AWS Batch submitJob可以通过进行配置BatchParameters。
其他参数可以在事件负载中指定。如果事件负载(通过或通过 InputTransformers)包含以下密钥,则它们将被映射到submitJob请求参数:
ContainerOverrides: containerOverrides注意
仅包括命令、环境、内存和 vCPU
DependsOn: dependsOn注意
仅包括 jobId
Parameters: parameters
CloudWatch 将组记录为目标
如果您不使用InputTransformer带有 CloudWatch Logs 目标的,则事件负载将用作日志消息,将事件的源用作时间戳。如果您确实使用了 InputTransformer,则模板必须是:
{"timestamp":<timestamp>,"message":<message>}
EventBridge 对发送到日志流的条目进行批处理;因此, EventBridge 可能会将单个或多个事件传送到日志流,具体取决于流量。
CodeBuild 以项目为目标
EventBridge 支持将标准版和批量版作为目标。
如果在将源事件传送到 CodeBuild 目标之前,使用输入转换器对源事件进行整形以匹配StartBuildRequest结构,则默认情况下,参数将以 1 比 1 的比codeBuild.StartBuild分映射并传递到。
要codeBuild.StartBuildBatch改为将参数传递给,请转换源事件以匹配StartBuildBatchRequest结构,然后将以下 key/value 一对添加到已转换事件的根中:
"buildType": "BATCH"
作为目标的 Amazon ECS 任务
如果您使用InputTransformers将输入事件塑造成目标以匹配 Amazon ECS RunTask TaskOverride结构,则参数将以 1 比 1 的比分映射并传递到。ecs.RunTask
作为目标的 Incident Manager 响应计划
如果匹配的事件来自 CloudWatch 警报,则警报状态更改详细信息将填充到事件管理器 StartIncidentRequest 呼叫的触发器详细信息中。
作为目标的 Amazon SQS 队列
EventBridge 不支持使用使用加密的 Amazon SQS 队列。 AWS 拥有的密钥这包括目标,以及指定为目标死信队列的 Amazon SQS 队列。有关更多信息 AWS 拥有的密钥,请参阅《AWS Key Management Service 开发者指南》中的AWS 自有密钥。