我一直在瀏覽 Step Function(SF) 檔案,但到目前為止還沒有運氣。
本質上,我們有一個帶有一個 lambda 的 SF。當該 lambda 完成時,我們同步呼叫另一個 SF,并將 lambda 的輸出作為有效負載。
Lambda 輸出大量值,它被放置在 SF 背景關系中,SF 中的下一步是呼叫另一個 SF,將 lambda 的輸出作為有效負載傳遞。
我的問題是,是否可以將該有效負載分塊,并且在第一個 SF 中,并行呼叫多個第二個 SF,每個并行呼叫的分塊輸出的不同部分?
uj5u.com熱心網友回復:
地圖狀態期望Iterator(在您的情況下為狀態機#2)和ItemsPath(要并行處理的元素陣列)。Step Functions 無法對資料進行本地分塊。如何將資料集拆分為可以傳遞給的陣列ItemsPath?這里有兩個選項:
ItemsPath: [chunk0-array, chunk1-array, ...]
正如@luk2302 建議的那樣,讓 Lambda 任務將資料拆分為子陣列。將 Map 設定ItemsPath為分塊 lambda ResultsPath。
ItemsPath: [0, 1, 2, 3, ...]
或者,不要分塊資料。相反,為您的輸入添加一個硬編碼的索引陣列ChunkIndex: [0,1,2,3](值無關緊要,只使用長度)和總塊ChunkCount: 4屬性。一個Pass州可以添加它。ChunkIndex是被迭代的欄位。每次Map迭代都會接收完整的資料集,但只處理其中的一個子集,每個迭代都可以根據其ChunkIndex和ChunkCount資料集長度進行計算。
默認情況下,每次Map迭代僅接收其迭代項作為輸入,因此使用引數和Context 物件重新處理輸入以將整個有效負載發送到每次迭代:
"States": {
"MapState": {
"Type": "Map",
"Parameters": {
"ChunkIndex.$": "$$.Map.Item.Index",
"FullInput.$": "$"
},
"ItemsPath": "$.ChunkIndex",
"Iterator": <State Machine #2>
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439832.html
標籤:打字稿 亚马逊网络服务 aws-lambda aws-step-functions
