

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

# 事件结构：数据、元数据和系统元数据
<a name="eb-custom-bus-addressing"></a>

过滤器、变压器和目标参数共享一个寻址模型。 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 字段
<a name="eb-custom-bus-addressing-system"></a>

`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用于读取保留的历史记录。请参阅 [向订阅者重播保留的事件](eb-custom-bus-replay.md)。 | 
| EventGroupId, DeduplicationId | 如发布时所提供。请参阅 [对自定义事件总线上的事件进行排序和重复数据消除](eb-custom-bus-ordering.md)。 | 
| 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 转换事件](eb-custom-bus-transform.md)。