本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊的 EventBridge 目标
目标是一种资源或端点,当事件与为规则定义的事件模式匹配时,它会将事件 EventBridge 发送到该资源或端点。该规则处理事件数据并将相关信息发送到目标。要将事件数据传送到目标, EventBridge 需要访问目标资源的权限。您可以为每条规则定义最多 5 个目标。
当您将目标添加到规则并在不久之后运行该规则时,可能不会立即调用任何新的或更新的目标。请稍等片刻,以便更改生效。
以下视频涵盖了目标的基础知识:
EventBridge 控制台中可用的目标
您可以在 EventBridge 控制台中为事件配置以下目标:
-
CodePipeline
-
亚马逊 EBS
CreateSnapshot
API 调用 -
EC2 Image Builder
-
EC2
RebootInstances
API 调用 -
EC2
StopInstances
API 调用 -
EC2
TerminateInstances
API 调用 -
Firehose 传输流
-
Glue 工作流
-
Inspector 评估模板
-
Kinesis 流
-
Lambda 函数(异步)
-
Redshift 集群数据 API 查询
-
SageMaker 管道
-
SNS 主题
-
SQS 队列
-
Step Functions s 状态机 (ASYNC)
-
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 ft 数据 API 集群) -
SageMakerPipelineParameters
(亚马逊建 SageMaker 模管道)
注意
EventBridge 不支持所有 JSON 路径语法并在运行时对其进行评估。支持的语法包括:
点符号(例如,
$.detail
)猛冲
下划线
字母数字字符
数组索引
通配符 (*)
动态路径参数
一些目标参数支持可选的动态 JSON 路径语法。此语法允许您指定 JSON 路径而不是静态值(例如$.detail.state
)。整个值必须是 JSON 路径,而不仅仅是其中的一部分。例如,RedshiftParameters.Sql
可以$.detail.state
但不可能"SELECT * FROM $.detail.state"
。这些路径在运行时被来自指定路径的事件负载本身的数据动态替换。动态路径参数无法引用输入转换产生的新值或变换后的值。动态参数 JSON 路径支持的语法与转换输入时的语法相同。有关更多信息,请参阅 亚马逊 EventBridge 输入转换
动态语法可用于以下参数的所有字符串、非枚举字段:
-
HttpParameters
(HeaderParameters
钥匙除外)
权限
要对您拥有的资源执行 API 调用, EventBridge 需要相应权限。对于Amazon Lambda和 Amazon SNS 资源, EventBridge 使用基于资源的策略。对于 EC2 实例、Kinesis 数据流和 Step Functions ep Funcons 状态机, EventBridge 使用您在RoleARN
参数中指定的 IAM 角色PutTargets
。您可以使用配置的 IAM 授权调用 API Gateway 终端节点,但如果您尚未配置授权,则该角色是可选的。有关更多信息,请参阅亚马逊 EventBridge 和Amazon Identity and Access Management:
如果另一个账户在同一区域并且已授予您权限,那么您可以向该账户发送事件。有关更多信息,请参阅在Amazon账户之间发送和接收亚马逊 EventBridge 事件:
如果目标已加密,您必须在 KMS 密钥策略中包含以下部分。
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
EventBridge 目标细节
Amazon Batch作业队列
的某些参数Amazon BatchsubmitJob
可以通过进行配置BatchParameters。
其他可以在事件负载中指定。如果事件负载(通过或通过 InputTransformers)包含以下密钥,则它们将映射到submitJob
请求参数:
ContainerOverrides: containerOverrides
注意
这仅包括命令、环境、内存和 vcpu
DependsOn: dependsOn
注意
这仅包括 jobId
Parameters: parameters
CloudWatch 日志组
如果您不使用InputTransformer带有 Lo CloudWatch gs 目标的,则事件负载将用作日志消息,将事件源用作时间戳。如果您确实使用了 InputTransformer,则模板必须是:
{"timestamp":<timestamp>,"message":<message>}
CodeBuild 项目
如果您使用InputTransformers将输入事件调整为目标以匹配 CodeBuild StartBuildRequest结构,则参数将以 1 比 1 映射并传递到codeBuild.StartBuild
。
Amazon ECS 任务
如果您使用InputTransformers将输入事件调整为目标以匹配 Amazon ECS RunTask TaskOverride结构,则参数将一对一映射并传递到ecs.RunTask
。
Incident Manager
如果匹配的事件来自 CloudWatch 警报,则警报状态更改详细信息将填充到 StartIncidentRequest 调用事件管理器的触发器详细信息中。