本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
事件结构:数据、元数据和系统元数据
过滤器、变压器和目标参数共享一个寻址模型。 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 始终存在。下表列出了这些字段。
| Field | Value |
|---|---|
aws:EventId | EventBridge 分配的标识符以以下方式返回给出版商 EventId |
aws:Source, aws:DetailType | 条目Source和DetailType用于PutEvents;发起的服务或合作伙伴及其事件源的事件类型。任何发布调用都无法设置以开头的来源aws.,因此{"aws:Source":["aws.s3"]}证明 Amazon S3 生成了该事件 |
aws:DeliveryType | LIVE用于在活动抵达时交付的活动,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 转换事件。