本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
转换亚马逊EventBridge目标输入
你可以自定义文本事件以前EventBridge将事件传递给目标的规则. 您可以使用控制台或 API 中的输入转换器,您可以定义使用 JSON 路径引用原始事件源中的值的变量。您可以定义最多 100 个变量,同时从输入中为每个变量分配一个值。然后,您可以在输入模板 中以 <variable-name
> 形式使用这些变量。
有关使用输入变压器的教程,请参阅教程:使用输入变压器自定义什么EventBridge传递到活动目标.
预定义变量
您可以在不定义 JSON 路径的情况下使用预定义的变量。这些变量是保留的,您不能使用以下名称创建变量:
-
aws.events.rule-arn
— 的 Amazon 资源名称 (ARN)EventBridge规则。 -
aws.events.rule-name
— 的名称EventBridge规则。 -
aws.events.event
— 原始事件的副本。 -
aws.events.event.ingestion-time
— 收到事件的时间EventBridge. 此变量是由EventBridge并且不能覆盖。 -
aws.events.event.json
— 事件的确切负载为字符串。
输入转换示例
以下是示例 Amazon EC2 事件。
{
"version": "0",
"id": "7bf73129-1428-4cd3-a780-95db273d1602",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "123456789012",
"time": "2015-11-11T21:29:54Z",
"region": "us-east-1",
"resources": [
"arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
],
"detail": {
"instance-id": "i-0123456789",
"state": "RUNNING"
}
}
在控制台中定义规则时,请选择输入转换器下面的选项配置输入. 此选项显示两个文本框:一个用于 Input Path (输入路径) ,一个用于 Input Template (输入模板)。
输入路径用于定义变量。您可以使用 JSON 路径来引用事件中的项目,并将这些值存储在变量中。例如,您可以通过在第一个文本框中输入以下内容来创建一个输入路径,以引用示例事件中的值。
{
"instance" : "$.detail.instance-id",
"state" : "$.detail.state"
}
这会定义两个变量,即 <instance>
和 <state>
。您可以在创建输入模板 时引用这些变量。
输入模板 是您要传递给目标的信息的模板。您可以创建将字符串或 JSON 传递到目标的模板。使用上一个事件和输入路径,以下输入模板 示例将事件转换为示例输出,然后再将其路由到目标。
描述 | 模板 | 输出 |
---|---|---|
简单字符串 |
|
|
带转义引号的字符串 |
|
请注意,这是 EventBridge 控制台中的行为。Amazon CLI 对斜杠字符进行转义,结果为 |
简单的 JSON |
|
|
带字符串和变量的 JSON |
|
|
混合变量和静态信息的 JSON |
|
|
在 JSON 中包含保留变量 |
|
|
在字符串中包含保留变量 |
|
|
通过使用EventBridgeAPI
有关使用EventBridge用于转换输入的 API,请参阅使用输入转换器从事件中提取数据并将该数据输入到目标.
通过使用转换输入Amazon CloudFormation
有关使用的信息Amazon CloudFormation要转换输入,请参阅AWS::Events::RuleInputTransformer.
转换输入的常见问题
这些是在中转换输入时的一些常见问题。EventBridge:
-
对于字符串,需要引号。
-
为模板创建 JSON 路径时不进行验证。
-
如果您指定一个变量以匹配在事件中不存在的 JSON 路径,则不会创建该变量,并且将不会在输出中显示该变量。
-
传递给目标的 JSON 被缩小并转义。
-
EventBridge不能逃避提取的值输入路径,在填充输入模板对于目标。