教程:使用输入转换器自定义要传递给事件目标的内容 - Amazon EventBridge
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:使用输入转换器自定义要传递给事件目标的内容

您可以使用 EventBridge 的输入转换器功能自定义从事件获取的文本,然后再将文本输入规则目标。

您可以从事件中定义多个 JSON 路径,并将其输出分配给不同的变量。然后,您可以在输入模板中以 <variable-name> 形式使用这些变量。不能对字符 < 和 > 进行转义。

如果您指定一个变量以匹配在事件中不存在的 JSON 路径,则不会创建该变量,并且不会在输出中显示该变量。

在本教程中,我们从实例状态更改事件中提取 Amazon EC2 实例的 instance-idstate。我们使用输入转换器将这些数据放入发送给 Amazon SNS 主题的易于阅读的消息中。当任何实例更改为任何状态时,均将触发该规则。例如,使用此规则,以下 Amazon EC2 实例状态更改通知事件将产生 Amazon SNS 消息:EC2 实例 i-1234567890abcdef0 将状态更改为已停止

{ "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-1234567890abcdef0" ], "detail":{ "instance-id":" i-1234567890abcdef0", "state":"stopped" } }

我们通过将 instance 变量映射到事件中的 $.detail.instance-id JSON 路径,将 state 变量映射到 $.detail.state JSON 路径,来实现这一点。然后,我们将输入模板设置为“The EC2 instance <instance> has changed state to <state>.”

注意

有关事件转换器的详细信息,请参阅转换目标输入

创建规则

使用输入转换器自定义发送到目标的实例状态更改信息

  1. 通过以下网址打开 Amazon EventBridge 控制台:https://console.amazonaws.cn/events/

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule

  4. 键入规则的名称和描述。

  5. 对于 Define pattern (定义模式),请执行以下操作:

    1. 选择 Event pattern

    2. 选择 Pre-defined pattern by service (服务预定义的模式)

    3. 对于 Service provider (服务提供商),选择 AWS

    4. 对于 Service Name (服务名称),请选择 EMR。​

    5. 对于 Event type (事件类型),请选择 EC2 Instance State-change Notification (EC2 实例状态更改通知)

    6. 依次选择任何状态任何实例

  6. 对于 Select event bus (选择事件总线),选择 AWS default event bus (AWS 默认事件总线)。当您账户中的某个 AWS 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  7. 对于 Target (目标),选择 SNS topic (SNS 主题)

  8. 对于 Topic (主题),选择您希望在 Amazon EC2 实例更改状态时通知的 Amazon SNS 主题。

  9. 选择配置输入输入转换器

  10. 对于 Input Path (输入路径),输入 {"state" : "$.detail.state", "instance" : "$.detail.instance-id"}

  11. 对于 Input Template (输入模板),输入 "The EC2 instance <instance> has changed state to <state>."

  12. 选择 Create