Amazon 中的事件总线目标 EventBridge - Amazon EventBridge

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

Amazon 中的事件总线目标 EventBridge

目标是一种资源或端点,当事件与为规则定义的事件模式匹配时,它会向其 EventBridge 发送事件。规则会处理事件数据,并将相关信息发送给目标。要将事件数据传送到目标, EventBridge 需要访问目标资源的权限。您最多可以为每条规则定义五个目标。

当您将目标添加到规则,之后该规则很快运行,可能不会立即调用新的或更新的目标。请稍等片刻,以便更改生效。

以下视频介绍了有关目标的基础知识:

EventBridge控制台中提供事件总线目标

您可以在 EventBridge 控制台中为事件配置以下目标:

目标参数

有些目标不会将事件负载中的信息发送给目标,而是将事件视为调用特定API事件的触发器。 EventBridge 使用目标参数来确定该目标会发生什么。这些功能包括:

  • API目的地(发送到API目的地的数据必须与的结构相匹配API。 必须使用该InputTransformer对象来确保数据的结构正确。 如果要包含原始事件负载,请在中引用它InputTransformer。)

  • API网关(发送到API网关的数据必须与网关的结构相匹配API。 必须使用该InputTransformer对象来确保数据的结构正确。 如果要包含原始事件负载,请在中引用它InputTransformer。)

  • 亚马逊 EC2 Image Builder

  • RedshiftDataParameters(亚马逊 Redshift 数据集群API)

  • SageMakerPipelineParameters(Amazon SageMaker 运行时模型构建管道)

注意

EventBridge 不支持所有 JSON Path 语法并在运行时对其进行评估。支持的语法包括:

  • 点表示法(例如 $.detail

  • 短划线

  • 下划线

  • 字母数字字符

  • 数组索引

  • 通配符 (*)

动态路径参数

一些目标参数支持可选的动态JSON路径语法。此语法允许您指定JSON路径而不是静态值(例如$.detail.state)。整个值必须是一JSON条路径,而不仅仅是其中的一部分。例如,RedshiftParameters.Sql 可以是 $.detail.state 但不能是 "SELECT * FROM $.detail.state"。这些路径在运行时会动态替换为来自指定路径的事件负载本身的数据。动态路径参数不能引用新值或输入转换生成的转换后的值。动态参数JSON路径支持的语法与转换输入时的语法相同。有关更多信息,请参阅 亚马逊 EventBridge 输入转换

动态语法可用于以下参数的所有字符串、非枚举字段:

权限

要API调用您拥有的资源, EventBridge 需要适当的权限。对于 AWS Lambda 和 Amazon SNS 资源, EventBridge 使用基于资源的策略。例如,EC2Kinesis 数据流和 Step Functions 状态机 EventBridge 使用您在中的RoleARN参数中指定的IAM角色。PutTargets您可以使用已配置的IAM授权来调用API网关终端节点,但如果您尚未配置授权,则该角色是可选的。有关更多信息,请参阅 亚马逊 EventBridge 和 AWS Identity and Access Management

如果另一账户在同一区域中,并且已授予您权限,您可以向该账户发送事件。有关更多信息,请参阅 在 Amazon AWS 账户之间发送和接收事件 EventBridge

如果您的目标已加密,则必须在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 以项目为目标

如果您使用将输入事件调整InputTransformers为 Target 以匹配 CodeBuild StartBuildRequest结构,则参数将以 1 比 1 的比分映射并传递到。codeBuild.StartBuild

以亚马逊ECS任务为目标

如果您使用将输入事件调整InputTransformers为 Target 以匹配 Amazon ECS RunTask TaskOverride结构,则参数将以 1 比 1 的比分映射并传递到。ecs.RunTask

将事件管理器响应计划作为目标

如果匹配的事件来自 CloudWatch 警报,则警报状态更改详细信息将填充到事件管理器 StartIncidentRequest 呼叫的触发器详细信息中。