Amazon EventBridge 中的事件总线目标 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EventBridge 中的事件总线目标

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

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

EventBridge 控制台中可用的事件总线目标

您可以在 EventBridge 控制台中为规则配置以下目标类型:

目标参数

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

  • API 目标

    发送到 API 目标的数据必须与 API 的结构相匹配。使用 InputTransformer 对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在 InputTransformer 中引用它。

  • API Gateway

    发送到 API Gateway 的数据必须与 API 的结构相匹配。使用 InputTransformer 对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在 InputTransformer 中引用它。

  • Amazon EC2 Image Builder

  • Amazon Redshift 数据 API 集群

    使用 RedshiftDataParameters

  • Amazon SageMaker 运行时系统模型构建管道

    使用 SageMakerPipelineParameters

  • Amazon SQS FIFO 队列

    使用 SqsParameters 指定要用作目标的消息组。

注意

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

  • 点表示法(例如 $.detail

  • 短划线

  • 下划线

  • 字母数字字符

  • 数组索引

  • 通配符 (*)

动态路径参数

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

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

权限

为了对您拥有的资源执行 API 调用,EventBridge 需要相应权限。使用 EventBridge 控制台或通过在 PutTargets 中设置 RoleARN 参数来指定 IAM 执行角色。

例如,以下策略定义了向 Amazon SQS 队列发送消息的权限:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": [ "arn:aws:sqs:us-east-1:111122223333:sqs-queue-name" ] } ] }

以下信任策略使 EventBridge 能够代入该角色:

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

您可以使用已配置的 IAM 授权调用 API Gateway 端点,但如果您尚未配置授权,该角色是可选的。有关更多信息,请参阅 Amazon EventBridge 和 Amazon Identity and Access Management

如果另一账户在同一区域中,并且已授予您权限,您可以向该账户发送事件。

有关更多信息,请参阅 在 Amazon EventBridge 的 Amazon 账户之间发送和接收事件

如果目标(例如 Amazon SQS 队列)使用 Amazon Key Management Service(Amazon KMS)加密,您必须在 KMS 密钥策略中包含以下部分:

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

作为目标的 Amazon Batch 作业队列

Amazon 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 结构相匹配,然后将以下键/值对添加到转换后事件的根目录:

"buildType": "BATCH"

作为目标的 Amazon ECS 任务

如果您使用 InputTransformers 将输入事件塑造成目标,以匹配 Amazon ECS RunTask TaskOverride 结构,参数将 1 对 1 映射,并传递到 ecs.RunTask

作为目标的 Incident Manager 响应计划

如果匹配的事件来自 CloudWatch 警报,则警报状态更改详细信息将填充到对 Incident Manager 的 StartIncidentRequest 调用的触发详细信息中。

作为目标的 Amazon SQS 队列

EventBridge 不支持使用通过 Amazon 拥有的密钥 加密的 Amazon SQS 队列。这包括目标,以及指定为目标死信队列的 Amazon SQS 队列。有关 Amazon 拥有的密钥 的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Amazon 自有密钥