本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EventBridge Pipes 目标
您可以将管道中的数据发送到特定目标。在 EventBridge 中设置管道时,您可以配置以下目标:
-
同一账户和区域中的事件总线
-
Firehose 传输流
-
Inspector 评估模板
-
Kinesis 流
-
Redshift 集群数据 API 查询
-
SageMaker 管道
-
Amazon SNS 主题(不支持 SNS FIFO 主题)
-
Amazon SQS 队列
-
快速工作流程(同步或异步)
标准工作流程(异步)
目标参数
有些目标服务不会将事件负载发送给目标,而是将事件视为调用特定 API 的触发器。EventBridge 使用 PipeTargetParameters
指定向 API 发送哪些信息。这些功能包括:
-
API 目标(发送到 API 目标的数据必须与 API 的结构相匹配。必须使用
InputTemplate
对象来确保数据的结构正确。如果要包含原始事件负载,请在InputTemplate
中引用它。) -
API Gateway(发送到 API Gateway 的数据必须与 API 的结构相匹配。必须使用
InputTemplate
对象来确保数据的结构正确。如果要包含原始事件负载,请在InputTemplate
中引用它。) -
PipeTargetRedshiftDataParameters
(Amazon Redshift 数据 API 集群) -
PipeTargetSageMakerPipelineParameters
(Amazon SageMaker 运行时系统模型构建管道) -
PipeTargetBatchJobParameters
(Amazon Batch)
注意
EventBridge 不支持所有 JSON 路径语法,并在运行时对其进行评估。支持的语法包括:
点表示法(例如
$.detail
)短划线
下划线
字母数字字符
数组索引
通配符 (*)
动态路径参数
EventBridge Pipes 目标参数支持可选的动态 JSON 路径语法。您可以使用此语法指定 JSON 路径而不是静态值(例如 $.detail.state
)。整个值必须是 JSON 路径,不能仅仅是其中的一部分。例如,RedshiftParameters.Sql
可以是 $.detail.state
但不能是 "SELECT * FROM $.detail.state"
。这些路径在运行时会动态替换为来自指定路径的事件负载本身的数据。动态路径参数不能引用新值或输入转换生成的转换后的值。动态参数 JSON 路径支持的语法与转换输入时的语法相同。有关更多信息,请参阅Amazon EventBridge Pipes 输入转换。
动态语法可用于所有 EventBridge Pipes 富集和目标参数的所有字符串、非枚举字段,但以下参数除外:
例如,要将管道 Kinesis 目标的 PartitionKey
设置为源事件中的自定义密钥,请将 KinesisTargetParameter.PartitionKey 设置为:
"$.data.
,适用于 Kinesis 源someKey
""$.body.
,适用于 Amazon SQS 源someKey
"
然后,如果事件负载是有效的 JSON 字符串,例如 {"
,EventBridge 会从 JSON 路径中提取该值并将其用作目标参数。在此示例中,EventBridge 会将 Kinesis someKey
":"someValue
"}PartitionKey
设置为 "someValue
"。
权限
为了对您拥有的资源执行 API 调用,EventBridge Pipes 需要相应权限。EventBridge Pipes 将您在管道中指定的 IAM 角色用于富集,将 IAM 主体 pipes.amazonaws.com
用于目标调用。
调用目标
EventBridge 具有以下方法用于调用目标:
-
同步(调用类型设置为
REQUEST_RESPONSE
)- EventBridge 在继续操作之前等待目标的响应。 -
异步(调用类型设置为
FIRE_AND_FORGET
)- EventBridge 不会等待收到响应后再继续操作。
默认情况下,对于排序源的管道,EventBridge 会同步调用目标,因为在继续处理下一事件之前需要目标的响应。
如果某个源不强制执行排序(例如标准 Amazon SQS 队列),EventBridge 可以同步或异步调用支持的目标。
使用 Lambda 函数和 Step Functions 状态机,您可以配置调用类型。
注意
对于 Step Functions 状态机,必须异步调用标准工作流程。
EventBridge Pipes 目标的具体信息
Amazon Batch 作业队列
所有 Amazon Batch submitJob
参数都使用 BatchParameters
显式配置,与所有 Pipe 参数一样,这些参数可以使用传入事件负载的 JSON 路径进行动态配置。
CloudWatch 日志组
无论您是否使用输入转换器,事件负载都将用作日志消息。您可以通过 PipeTarget
中的 CloudWatchLogsParameters
设置 Timestamp
(或目标的显式 LogStreamName
)。与所有管道参数一样,这些参数可以使用传入事件负载的 JSON 路径进行动态配置。
Amazon ECS 任务
所有 Amazon ECS runTask
参数都是通过 EcsParameters
显式配置的。与所有管道参数一样,这些参数可以使用传入事件负载的 JSON 路径进行动态配置。
Lambda 函数和 Step Functions 工作流程
Lambda 和 Step Functions 没有批处理 API。要处理来自管道源的事件批次,批次将转换为 JSON 数组,并作为输入传递给 Lambda 或 Step Functions 目标。有关更多信息,请参阅Amazon Pip EventBridge es 批处理和并发。