在 Step Functions 中處理輸入和輸出 - AWS Step Functions

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

在 Step Functions 中處理輸入和輸出

使用變數和 JSONata 管理狀態

Step Functions 最近新增了變數和 JSONata 來管理狀態和轉換資料。

如需進一步了解,請參閱部落格文章 簡化開發人員在 中使用變數和 JSONata 的體驗 AWS Step Functions

Step Functions 執行收到 JSON 輸入時,會將該資料傳遞至工作流程中的第一個狀態做為輸入。

使用 JSONata,您可以從 擷取狀態輸入$states.input。您的狀態機器執行也提供 中的初始輸入資料內容物件。您可以從 擷取工作流程中任何時間點的原始狀態機器輸入$states.context.Execution.Input

當狀態結束時,其輸出可供狀態機器中下一個狀態使用。除非您修改狀態輸出,否則狀態輸入預設會傳遞為狀態輸出。對於後續步驟中可能需要的資料,請考慮將其儲存在變數中。如需更多詳細資訊,請參閱使用變數在狀態之間傳遞資料

QueryLanguage 建議

對於新的狀態機器,我們建議使用 JSONata 查詢語言。在未指定查詢語言的狀態機器中,狀態機器會預設為 JSONPath,以確保回溯相容性。您必須選擇加入,為您的狀態機器或個別狀態使用 JSONata。

使用 JSONata 處理輸入和輸出

使用 JSONata 表達式,您可以選取和轉換資料。在 Arguments欄位中,您可以自訂傳送至 動作的資料。結果可以在 Output 欄位中轉換為自訂狀態輸出。您也可以將資料存放在 Assign 欄位中的變數中。如需詳細資訊,請參閱使用 JSONata 轉換資料

下圖顯示 JSON 資訊如何在 JSONata 任務狀態中移動。

Diagram showing JSONata task state flow with input, arguments, output, and action components.

使用 JSONPath 處理輸入和輸出

對於使用 JSONPath 的狀態機器,下列欄位控制從狀態到狀態的資料流程:InputPathParametersResultPathResultSelectorOutputPath。每個 JSONPath 欄位都可以在工作流程中的每個狀態移動時操作 JSON。

JSONPath 欄位可以使用路徑從輸入或結果中選取 JSON 的部分。路徑是以 開頭的字串$,可識別 JSON 文字中的節點。Step Functions 路徑使用 JsonPath 語法。

下圖顯示 JSON 資訊如何通過 JSONPath 任務狀態。會InputPath選取要傳遞給Task狀態任務的 JSON 輸入部分 (例如 AWS Lambda 函數)。您可以在 Parameters 欄位中調整傳送至動作的資料。然後,使用 ResultSelector,您可以選取要繼續執行的動作結果部分。ResultPath然後, 會選取要傳遞至輸出的狀態輸入和任務結果組合。 OutputPath可以篩選 JSON 輸出,以進一步限制傳遞至輸出的資訊。

篩選條件順序:InputPath、參數、ResultSelector、ResultPath 和 OutputPath。