View a markdown version of this page

事件结构:数据、元数据和系统元数据 - 亚马逊 EventBridge

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

事件结构:数据、元数据和系统元数据

过滤器、变压器和目标参数共享一个寻址模型。 EventBridge 使用PutRawEvents三个顶级名称传递每个事件:Data保存有效负载、Metadata保存您提供的密钥和SystemMetadata保存 EventBridge 分配的字段。你自己的字段在里面的位置Data取决于发布的 API。两个 API 生成相同类型的事件, EventBridge过滤和转换的方式相同。区别仅在于里面的东西Data。

零件 发布于 PutRawEvents 发布于 PutEvents
Data 您的有效载荷,与发送的完全一样 包含source、detail-typetime、和其他字段的信封。您的有效载荷的值为detail。
Metadata 您的元数据密钥 不存在
SystemMetadata 由分配的字段 EventBridge 由分配的字段 EventBridge

JSonata 表达式将该事件视为。$events每个 API 的相同订单标识符位于不同的路径。

发布于PutRawEvents:

$events.Data.orderId

发布于PutEvents:

$events.Data.detail.orderId

同样的区别适用于范围为的过滤器DATA。该图案是针对的内容写的Data。

发布于PutRawEvents:

{ "total": [ { "numeric": [ ">", 500 ] } ] }

发布于PutEvents:

{ "detail": { "total": [ { "numeric": [ ">", 500 ] } ] } }
重要

为错误的形状编写的表达式或图案不会失败。它解析为零,过滤器不匹配任何事件,变压器不产生输出。筛选条件不匹配的订阅者看起来与不起作用的订阅者相同。在依赖订阅者之前,发布一个应该匹配的事件和一个不应该匹配的事件,然后在目标端确认这两个结果。如果制作者使用两个 API 发布到同一条总线,则为每种流量提供自己的订阅者。

SystemMetadata 字段

SystemMetadata两个 API 都相同,并且是事件中唯一由其 EventBridge 本身写入的部分。具有SYSTEM_METADATA匹配范围的过滤器,JsoNata 表达式将其读为。$events.SystemMetadata每个值都是一个字符串。 EventBridge 省略没有值的字段,因此,对该字段的 Jsonata 引用的计算结果为undefined; only aws:DeliveryType 始终存在。下表列出了这些字段。

FieldValue
aws:EventId EventBridge 分配的标识符以以下方式返回给出版商 EventId
aws:Source, aws:DetailType条目Source和DetailType用于PutEvents;发起的服务或合作伙伴及其事件源的事件类型。任何发布调用都无法设置以开头的来源aws.,因此{"aws:Source":["aws.s3"]}证明 Amazon S3 生成了该事件
aws:DeliveryTypeLIVE用于在活动抵达时交付的活动,REPLAY用于读取保留的历史记录。请参阅 向订阅者重播保留的事件。
EventGroupId, DeduplicationId如发布时所提供。请参阅 对自定义事件总线上的事件进行排序和重复数据消除。
ContentType发布的内容类型:f application/eventbridge+json orPutEvents;for,条目的值PutRawEvents,因此 EventBridge 解码为 JSON 的 Avro 和 Protobuf 数据仍然显示或 application/avro application/protobuf
aws:IngestionTime公交车何时接受活动
aws:SequenceNumber事件在总线上的位置;随着摄取顺序的增加而增加
aws:SchemaId, aws:RegistryType用于反序列化 Avro 或 Protobuf 有效负载的架构和注册表;否则不存在

Metadata仅在使用PutRawEvents该设置发布的事件上出现;对于所有其他事件,它都是空的。对于application/octet-stream,Data是一个 Base64 字符串。Transformer表达式中$events是一个事件;只有在通用目标中它才是一个数组。Input请参阅使用 JSonata 转换事件。