

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 事件結構：資料、中繼資料和系統中繼資料
<a name="eb-custom-bus-addressing"></a>

篩選條件、轉換器和目標參數共用一個定址模型。EventBridge 會以三個最上層名稱傳遞每個事件： `Data` 保留承載、 `Metadata`保留您隨 提供的金鑰`PutRawEvents`，以及 `SystemMetadata`保留 EventBridge 指派的欄位。您自己的欄位位於其中的位置`Data`取決於發佈 API。這兩個 APIs都會產生相同類型的事件，EventBridge 會同時篩選和轉換兩者。差別僅在 內`Data`。


| 部分 | 使用 發佈 `PutRawEvents` | 使用 發佈 `PutEvents` | 
| --- | --- | --- | 
| Data | 您的承載，與傳送完全相同 | 包含 source、time、 detail-type和其他欄位的信封。您的承載是 的值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 ] } ] } }
```

**重要**  
針對錯誤形狀編寫的表達式或模式不會失敗。它不會解析為任何內容，篩選條件不會符合任何事件，而且轉換器不會產生任何輸出。篩選條件不相符的訂閱者看起來與未運作的訂閱者不同。在依賴訂閱者之前，請發佈一個應相符的事件和一個不應相符的事件，並在目標確認兩個結果。如果生產者使用兩個 APIs 發佈到相同的匯流排，請將自己的訂閱者提供給每種流量。

## SystemMetadata 欄位
<a name="eb-custom-bus-addressing-system"></a>

`SystemMetadata` 對兩個 APIs都是相同的，並且是 EventBridge 本身寫入事件的唯一部分。具有`SYSTEM_METADATA`相符範圍的篩選條件，且 JSONata 表達式會將其讀取為 `$events.SystemMetadata`。每個值都是字串。EventBridge 會省略沒有值的欄位，因此 JSONata 參考會評估為 `undefined`；只有 `aws:DeliveryType`存在。下表列出欄位。


| 欄位 | 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 | 發佈的內容類型：application/eventbridge\+json適用於 PutEvents；適用於 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)。