View a markdown version of this page

將事件發佈至自訂事件匯流排 - Amazon EventBridge

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

將事件發佈至自訂事件匯流排

您可以使用兩個 API 操作之一PutEvents或 ,將事件發佈至自訂事件匯流排PutRawEvents。您選擇的操作會修正已交付事件的形狀,而該形狀會決定如何寫入匯流排的每個篩選條件、轉換器和目標參數。在撰寫第一個訂閱者之前,請選擇 。如需這兩種形狀,請參閱 事件結構:資料、中繼資料和系統中繼資料。

這兩個操作會產生一種事件,當事件在匯流排上時EventBridge 會以相同的方式處理它們。 PutEvents 是 的便利性PutRawEvents:EventBridge 採用項目的 Source、Detail、 DetailType和其他欄位,從它們建置 JSON 信封,並將該信封儲存為內容類型為 的 JSON 承載application/eventbridge+json。從那時起,篩選、轉換、排序、重複資料刪除、保留和交付工作,就像使用 發佈的 JSON 事件一樣PutRawEvents。訂閱者看到的唯一差異是您的欄位所在的位置: Data位於 的 頂端PutRawEvents, 位於 的信封Data.detail下方PutEvents。如需 Avro、Protobuf 和不透明承載,請參閱 支援的內容類型:JSON、Avro、Protobuf 和原始位元組。

PutEvents PutRawEvents
承載欄位 Detail,JSON 字串 Data、任何格式的位元組
每個項目中的必要項目 Source, DetailType Data, SystemMetadata.ContentType
內容類型 由 EventBridge 設定為 application/eventbridge+json 由您設定:application/json、application/protobuf、 application/avro或 application/octet-stream。請參閱 支援的內容類型:JSON、Avro、Protobuf 和原始位元組。
您自己的中繼資料 不適用 Metadata,最多 100 個金鑰的映射
排序和重複資料刪除輸入 SystemMetadata.EventGroupId, SystemMetadata.DeduplicationId 相同的兩個欄位
使用時機 您的事件是 JSON,而且您想要與自訂事件匯流排 - Classic 產生的相同信封 您的承載是二進位或非 JSON,您需要自己的中繼資料金鑰,或者您希望承載完全按照傳送方式交付

發佈 APIs

這兩個操作每個請求需要一批 1 到 100 個項目,並按請求順序傳回每個項目一個結果。EventBridge 會自行接受或拒絕每個項目:拒絕的項目會攜帶 ErrorCode和 ErrorMessage來取代 SuccessCode,且相同請求中的其他項目不會受到影響。屬於一起的批次項目,並讀取每個結果,而不是只讀取 HTTP 狀態;請參閱 讀取回應。這兩個呼叫都會從您帳戶的一個發佈費率預算中提取,而匯流排本身具有每秒擷取配額,可計算每個發佈者和事件來源;請參閱 自訂事件匯流排配額。

使用 PutEvents 發佈 JSON 事件

aws eventsv2 put-events \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --entries '[ { "Source": "com.example.orders", "DetailType": "OrderPlaced", "Detail": "{\"orderId\":\"1001\",\"total\":42.5}" } ]'

使用 PutRawEvents 發佈原始事件

Data 是二進位欄位。在 中 AWS CLI,將其提供為 base64 文字。下列範例會發佈與內容類型為 的原始位元組相同的 JSON 承載application/json,並新增中繼資料金鑰。

aws eventsv2 put-raw-events \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --entries '[ { "Data": "eyJvcmRlcklkIjoiMTAwMSIsInRvdGFsIjo0Mi41fQ==", "Metadata": { "tenant": "acme" }, "SystemMetadata": { "ContentType": "application/json" } } ]'

若要發佈 Avro 或 Protobuf,請使用 在請求中命名結構描述登錄檔--schema-registry-configuration。 RegistryUri 是 AWS Glue 結構描述登錄檔 ARN 或 Confluent Cloud HTTPS URL。登錄檔是根據請求命名,而不是在匯流排上。內容類型為 的事件application/octet-stream不需要登錄,因為 EventBridge 不會解碼它們。

發佈原始位元組

若要發佈 EventBridge 不應剖析或檢查的承載,請PutRawEvents呼叫 中的 Base64-encoded位元組,Data並將 SystemMetadata.ContentType設定為 application/octet-stream。EventBridge 會完全按照傳送的方式存放和交付位元組,因此DATA篩選條件無法比對它們;使用您在項目上設定的METADATA金鑰或使用 路由它們SYSTEM_METADATA。訂閱者的轉換器會將承載視為 中的 Base64 字串$events.Data。如需 Avro 和 Protobuf 的交付選擇和還原序列化替代方案,請參閱 支援的內容類型:JSON、Avro、Protobuf 和原始位元組;如需承載對轉換器的顯示方式,請參閱 使用 JSONata 轉換事件。

讀取回應

兩個操作都會傳回每個項目的一個結果,順序與請求相同。每個結果都有 SuccessCode或 ErrorCode和 ErrorMessage。檢查每個項目,因為請求可以在個別項目失敗時成功。

SuccessCode 是 PUBLISHED或 DEDUPLICATED。 DEDUPLICATED表示 EventBridge 將項目識別為已接受且未存放第二個副本之事件的複本。這是成功,不是錯誤。如需詳細資訊,請參閱在自訂事件匯流排上排序和刪除重複事件。

EventBridge 接受事件的發佈回應報告。它不會報告交付。若要確認事件已送達,請檢查目標。

本節包含下列主題: