Amazon EventBridge 中的事件总线目标
目标 是一个资源或端点,当事件与规则中定义的事件模式匹配时,EventBridge 会向目标发送该事件。规则会处理事件数据,并将相关信息发送给目标。要将事件数据传送到目标,EventBridge 需要获得访问目标资源的权限。您最多可以为每条规则定义五个目标。
当您将目标添加到规则,之后该规则很快运行,可能不会立即调用新的或更新的目标。请稍等片刻,以便更改生效。
EventBridge 控制台中可用的事件总线目标
您可以在 EventBridge 控制台中为规则配置以下目标类型:
API 目标
API 目标属于 HTTPS 端点,您可以将其作为事件总线规则的目标进行调用。当您将 API 目标指定为规则目标时,EventBridge 会为与规则中指定的事件模式匹配的任何事件调用 HTTPS 端点,然后随请求一起传送事件信息。有关更多信息,请参阅 API 目标。
事件总线
您可以将其他事件总线指定为规则的目标。这包括相同或不同 Amazon 账户中的事件总线。
Amazon 服务
您可以让 EventBridge 向多个 Amazon 服务资源发送事件。这些指令包括:
-
CodePipeline
-
Amazon EBS
CreateSnapshotAPI 调用 -
EC2 Image Builder
-
EC2
RebootInstancesAPI 调用 -
EC2
StopInstancesAPI 调用 -
EC2
TerminateInstancesAPI 调用 -
Firehose 传输流
-
Glue 工作流
-
Inspector 评估模板
-
Kinesis 流
-
Lambda 函数(异步)
-
SageMaker AI 管道
-
Amazon SNS 主题
-
Step Functions 状态机(异步)
-
Systems Manager Automation
-
Systems Manager OpsItem
-
Systems Manager 运行命令
目标参数
有些目标不会将事件负载中的信息发送给目标,而是将事件视为调用特定 API 的触发器。EventBridge 使用目标参数来确定目标要执行的操作。这些功能包括:
-
API 目标
发送到 API 目标的数据必须与 API 的结构相匹配。使用
InputTransformer对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在InputTransformer中引用它。 -
API Gateway
发送到 API Gateway 的数据必须与 API 的结构相匹配。使用
InputTransformer对象可确保数据结构正确无误。如果要包含原始事件有效载荷,请在InputTransformer中引用它。 -
Amazon EC2 Image Builder
-
Amazon Redshift 数据 API 集群
-
Amazon SageMaker 运行时系统模型构建管道
-
Amazon SQS FIFO 队列
使用
SqsParameters指定要用作目标的消息组。
注意
EventBridge 不支持所有 JSON 路径语法,并在运行时对其进行评估。支持的语法包括:
点表示法(例如
$.detail)短划线
下划线
字母数字字符
数组索引
通配符 (*)
动态路径参数
一些目标参数支持可选的动态 JSON 路径语法。此语法允许您指定 JSON 路径而不是静态值(例如 $.detail.state)。整个值必须是 JSON 路径,不能仅仅是其中的一部分。例如,RedshiftParameters.Sql 可以是 $.detail.state 但不能是 "SELECT * FROM $.detail.state"。这些路径在运行时会动态替换为来自指定路径的事件负载本身的数据。动态路径参数不能引用新值或输入转换生成的转换后的值。动态参数 JSON 路径支持的语法与转换输入时的语法相同。有关更多信息,请参阅 Amazon EventBridge 输入转换。
动态语法可用于以下参数的所有字符串、非枚举字段:
-
HttpParameters(HeaderParameters键除外)
权限
为了对您拥有的资源执行 API 调用,EventBridge 需要相应权限。使用 EventBridge 控制台或通过在 PutTargets 中设置 RoleARN 参数来指定 IAM 执行角色。
例如,以下策略定义了向 Amazon SQS 队列发送消息的权限:
以下信任策略使 EventBridge 能够代入该角色:
您可以使用已配置的 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 自有密钥。