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

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

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

与 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 常见错误参考

result 将具有以下类型定义:

type PutEventsResult = { Entries: { ErrorCode: string ErrorMessage: string EventId: string }[] FailedEntryCount: 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 字段是所有请求映射模板通用的,用于定义模板使用的版本。该字段为必填。该值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" : [] }