Amazon EventBridge 管道批處理和並發 - Amazon EventBridge

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

Amazon EventBridge 管道批處理和並發

批次處理行為

EventBridge 管道支援從來源和支援它的目標進行批次處理。此外,還支援和的批次處理以擴充。 AWS Lambda AWS Step Functions由於不同的服務支援不同層級的批次處理,因此您無法設定大於目標所支援的批次大小的管道。例如,Amazon Kinesis 串流來源支援的批次大小上限為 10,000 筆記錄,但 Amazon 簡單佇列服務每個批次最多支援 10 則訊息做為目標。因此,從 Kinesis 串流到 Amazon SQS 佇列的管道在來源上可以設定最大批次大小為 10。

如果您使用不支援批次處理的擴充功能或目標來設定管道,您將無法在來源上啟動批次處理。

在來源上啟動批次處理時,JSON記錄陣列會透過管道傳遞,然後對應至受支援的擴充項目或目標的批次API。輸入變壓器會分別套用於陣列中的每個JSON記錄,而不是整個陣列。如需這些陣列的範例,請參閱 Amazon EventBridge 管道來源 並選取特定來源。即使批次大小API為 1,管道也會將該批次用於支援的擴充或目標。如果擴充或目標沒有批次,API但收到完整的JSON承載 (例如 Lambda 和 Step Functions),則會在一個請求中傳送整個JSON陣列。即使批次大小為 1,請求也會以JSON陣列形式傳送。

如果在來源設定了管道進行批次處理,且目標支援批次處理,您可以從擴充中傳回JSON項目陣列。此陣列可以包含比原始來源更短或更長的陣列。但是,如果陣列大於目標支持的批次大小,則管道將不會調用目標。

受支援的可分批目標

目標 最大批次大小
CloudWatch 日誌 10,000
EventBridge 事件巴士 10
Firehose 溪 500
Kinesis 串流 500
Lambda 函數 客戶定義
Step Functions 狀態機器 客戶定義
Amazon SNS 主題 10
Amazon SQS 隊列 10

下列擴充項目和目標會接收完整批次事件承載以進行處理,並受到事件總裝載大小的限制,而不是批次的大小:

  • Step Functions 狀態機器 (262144 個字元)

  • Lambda 函數 (6MB)

部分批次失敗

對於 Amazon SQS 和串流來源 (例如 Kinesis 和 DynamoDB), EventBridge 管道支援目標故障的部分批次失敗處理。如果目標支援批次處理,且只有部分批次成功,則 EventBridge 會自動重試批次處理承載的剩餘部分。對於最 up-to-date 豐富的內容,此重試會透過整個管道進行,包括重新叫用任何已設定的擴充。

不支援擴充的部分批次失敗處理。

針對 Lambda 和 Step Functions 目標,您也可以從目標傳回已定義結構的承載,以指定部分失敗。這表示需要重試的事件。

部分故障有效負載結構示例

{ "batchItemFailures": [ { "itemIdentifier": "id2" }, { "itemIdentifier": "id4" } ]

在此範例中,itemIdentifier 會比對目標從其原始來源處理的事件 ID。對於 Amazon 來說SQS,這是messageId. 針對 Kinesis 和 DynamoDB 而言,這是 eventID. 若要讓 P EventBridge ipes 充分處理來自目標的部分批次失敗,這些欄位必須包含在擴充傳回的任何陣列裝載中。

輸送量和並發行為

管道接收到的每個事件或一批事件,而該事件傳遞到一個擴充或目標都被視為管道執行。處於 STARTED 狀態的管道會持續輪詢來自來源的事件,並根據可用的積壓和配置的批次處理設定縱向擴展和縮小。

有關並行管道執行的配額,以及每個帳戶和區域的管道數量,請參閱 EventBridge 管道配額

根據預設,根據來源,單一管道會擴展至下列最大並行執行次數:

  • DynamoDB:並行執行可以攀升至管道上 ParallelizationFactor 設定的高度乘以串流中的碎片數目。

  • Apache Kafka:並行執行可以攀升與該主題有關的分區數量一樣高,最多可達 1000 個。

  • Kinesis:並行執行可以攀升至管道上 ParallelizationFactor 設定的高度乘以串流中的碎片數目。

  • Amazon MQ:5

  • Amazon SQS

如果您需要更高的最大輪詢輸送量或並行限制,請聯絡支援人員

注意

執行限制被認為是盡力而為的安全限制。雖然輪詢不會限制在這些值之下,但管道或帳戶可能會高於這些建議值。

管道執行的時間限制為最多 5 分鐘,包括擴充和目標處理。此限制目前無法提高。

具有嚴格排序來源 (例如 Amazon SQS FIFO 佇列、Kinesis 和 DynamoDB Streams 或 Apache Kafka 主題) 的管道會進一步受到來源組態的限制,例如佇列的訊息群組數目或 Kinesis FIFO 佇列IDs的碎片數目。由於在這些限制範圍內嚴格保證訂購,因此具有有序源的管道不能超過這些並發限制。