EventBridge 数据源的 JavaScript 解析器函数参考 - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

EventBridge 数据源的 JavaScript 解析器函数参考

通过使用与 EventBridge 数据源一起使用的 Amazon AppSync 解析器函数请求和响应,您可以将自定义事件发送到 Amazon EventBridge 总线。

请求

通过使用请求处理程序,您可以将多个自定义事件发送到 EventBridge 事件总线:

export function request(ctx) { return { "operation" : "PutEvents", "events" : [{}] } }

EventBridge PutEvents 请求具有以下类型定义:

type PutEventsRequest = { operation: 'PutEvents' events: { source: string detail: { [key: string]: any } detailType: string resources?: string[] time?: string // RFC3339 Timestamp format }[] }

响应

如果 PutEvents 操作成功,则将来自 EventBridge 的响应包含在 ctx.result 中:

export function response(ctx) { if(ctx.error) util.error(ctx.error.message, ctx.error.type, ctx.result) else return ctx.result }

执行 PutEvents 操作时发生的错误(例如 InternalExceptionsTimeouts)将出现在 ctx.error 中。有关 EventBridge 的常见错误列表,请参阅 EventBridge common error reference

result 将具有以下类型定义:

type PutEventsResult = { Entries: { ErrorCode: string ErrorMessage: string EventId: string }[] FailedEntry: number }
  • Entries

    摄取的事件结果(成功和失败)。如果摄取成功,则在该条目中包含 EventID。否则,您可以使用 ErrorCodeErrorMessage 找出条目的问题。

    对于每条记录,响应元素的索引与请求数组中的索引相同。

  • FailedEntryCount

    失败条目数。该值表示为一个整数。

有关 PutEvents 响应的更多信息,请参阅 PutEvents

示例响应 1

以下示例是具有两个成功事件的 PutEvents 操作:

{ "Entries" : [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ], "FailedEntryCount" : 0 }

示例响应 2

以下示例是具有三个事件的 PutEvents 操作,其中的两个事件是成功事件,一个是失败事件:

{ "Entries" : [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" }, { "ErrorCode" : "SampleErrorCode", "ErrorMessage" : "Sample Error Message" } ], "FailedEntryCount" : 1 }

PutEvents 字段

  • Version

    version 字段是所有请求映射模板通用的,用于定义模板使用的版本。该字段为必填。值 2018-05-29 是 EventBridge 映射模板支持的唯一版本。

  • 操作

    唯一支持的操作是 PutEvents。通过执行该操作,您可以将自定义事件添加到事件总线中。

  • 事件

    将添加到事件总线的事件数组。应该为该数组分配 1-10 个项目。

    Event 对象具有以下字段:

    • "source":定义事件源的字符串。

    • "detail":可用于附加事件相关信息的 JSON 对象。该字段可以是空映射 ({ })。

    • "detailType:指定事件类型的字符串。

    • "resources":指定事件中涉及的资源的 JSON 字符串数组。该字段可以是空数组。

    • "time":以字符串形式提供的事件时间戳。它应该采用 RFC3339 时间戳格式。

以下片段是一些有效 Event 对象示例:

示例 1

{ "source" : "source1", "detail" : { "key1" : [1,2,3,4], "key2" : "strval" }, "detailType" : "sampleDetailType", "resources" : ["Resouce1", "Resource2"], "time" : "2022-01-10T05:00:10Z" }

示例 2

{ "source" : "source1", "detail" : {}, "detailType" : "sampleDetailType" }

示例 3

{ "source" : "source1", "detail" : { "key1" : 1200 }, "detailType" : "sampleDetailType", "resources" : [] }