在 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 任務狀態中移動。

使用 JSONPath 處理輸入和輸出

管理狀態和轉換資料

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

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

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

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