目标 是一个资源或端点,当事件与规则中定义的事件模式匹配时,EventBridge 会向目标发送该事件。规则会处理事件数据,并将相关信息发送给目标。要将事件数据传送到目标,EventBridge 需要获得访问目标资源的权限。您最多可以为每条规则定义五个目标。
当您将目标添加到规则,之后该规则很快运行,可能不会立即调用新的或更新的目标。请稍等片刻,以便更改生效。
以下视频介绍了有关目标的基础知识:
EventBridge 控制台中可用的事件总线目标
您可以在 EventBridge 控制台中为事件配置以下目标:
-
CodePipeline
-
Amazon EBS
CreateSnapshot
API 调用 -
EC2 Image Builder
-
EC2
RebootInstances
API 调用 -
EC2
StopInstances
API 调用 -
EC2
TerminateInstances
API 调用 -
Firehose 传输流
-
Glue 工作流
-
Inspector 评估模板
-
Kinesis 流
-
Lambda 函数(异步)
-
SageMaker 管道
-
Amazon SNS 主题
EventBridge 不支持 Amazon SNS FIFO(先进先出)主题。
-
Amazon SQS 队列
-
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
-
RedshiftDataParameters
(Amazon Redshift 数据 API 集群) -
SageMakerPipelineParameters
(Amazon SageMaker 运行时系统模型构建管道)
注意
EventBridge 不支持所有 JSON 路径语法,并在运行时对其进行评估。支持的语法包括:
点表示法(例如
$.detail
)短划线
下划线
字母数字字符
数组索引
通配符 (*)
动态路径参数
一些目标参数支持可选的动态 JSON 路径语法。此语法允许您指定 JSON 路径而不是静态值(例如 $.detail.state
)。整个值必须是 JSON 路径,不能仅仅是其中的一部分。例如,RedshiftParameters.Sql
可以是 $.detail.state
但不能是 "SELECT * FROM $.detail.state"
。这些路径在运行时会动态替换为来自指定路径的事件负载本身的数据。动态路径参数不能引用新值或输入转换生成的转换后的值。动态参数 JSON 路径支持的语法与转换输入时的语法相同。有关更多信息,请参阅 Amazon EventBridge 输入转换
动态语法可用于以下参数的所有字符串、非枚举字段:
-
HttpParameters
(HeaderParameters
键除外)
权限
为了对您拥有的资源执行 API 调用,EventBridge 需要相应权限。对于 AWS Lambda 和 Amazon SNS 资源,EventBridge 使用基于资源的策略。对于 EC2 实例、Kinesis 数据流和 Step Functions 状态机,EventBridge 使用您在 PutTargets
中的 RoleARN
参数中指定的 IAM 角色。您可以使用已配置的 IAM 授权调用 API Gateway 端点,但如果您尚未配置授权,该角色是可选的。有关更多信息,请参阅 Amazon EventBridge 和 AWS Identity and Access Management。
如果另一账户在同一区域中,并且已授予您权限,您可以向该账户发送事件。有关更多信息,请参阅 在 Amazon EventBridge 的 AWS 账户之间发送和接收事件。
如果您的目标已加密,您必须在 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 将输入事件塑造成目标,以匹配 CodeBuild StartBuildRequest 结构,参数将 1 对 1 映射,并传递到 codeBuild.StartBuild
。
作为目标的 Amazon ECS 任务
如果您使用 InputTransformers 将输入事件塑造成目标,以匹配 Amazon ECS RunTask TaskOverride 结构,参数将 1 对 1 映射,并传递到 ecs.RunTask
。
作为目标的 Incident Manager 响应计划
如果匹配的事件来自 CloudWatch 警报,则警报状态更改详细信息将填充到对 Incident Manager 的 StartIncidentRequest 调用的触发详细信息中。