使用ResultSelector、ResultPath和OutputPath篩選器設定輸出 - AWS Step Functions

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

使用ResultSelector、ResultPath和OutputPath篩選器設定輸出

WorkflowInputOutput狀態機器中叫用 check-address Lambda 函數時,函數會在執行位址驗證後傳回輸出裝載。在 [執行詳細資料] 頁面上,選擇 [驗證位址] 步驟,並在步驟詳情窗格的 [工作結果] 內檢視輸出承載。

{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }

使用 ResultSelector

現在,如果您需要將身分識別和位址驗證檢查的結果提供給工作流程中的下列狀態,您可以在輸出 JSON 中選取 payload.Body 節點,並使用ResultSelector篩選器中的StringToJson內建函數根據需要將資料格式化。

ResultSelector工作輸出中選取需要的項目。在下面的例子中,ResultSelector採用 $.payload.body 的字符串,並應用States.StringToJson內部函數將字符串轉換為 JSON,並將生成的 JSON 放在標識節點內。

"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }

因此,會建立下列 JSON 資料。

{ "identity": { "approved": true, "message": "Identity validation passed" } }

當您使用這些輸入和輸出篩選器時,您也可能會遇到因為指定了無效的 JSON 路徑運算式而產生的執行階段錯誤。如需詳細資訊,請參閱 。

使用 ResultPath

您可以在初始輸入有效負載中指定位置,以使用ResultPath欄位儲存狀態的任務處理結果。如果未指定ResultPath,則其值預設為$,這會使初始輸入有效負載取代為原始工作結果。如果指定ResultPathnull,則會捨棄原始結果,且初始輸入有效負載會成為有效輸出。

如果您在使用ResultPath欄位建立的 JSON 資料上套用ResultSelector欄位,則工作結果會新增至輸入裝載的結果節點內,如下列範例所示:

{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }, "results": { "identity": { "approved": true } } }

使用 OutputPath

您可以在應用程式之後選取狀態輸出的一部分,以傳遞ResultPath至下一個狀態。這可讓您篩選掉不需要的資訊,只傳遞您關注的 JSON 部分。

在下列範例中,OutputPath欄位會將狀態輸出儲存在結果節點內:"OutputPath": "$.results"。因此,狀態的最終輸出,您可以傳遞到下一個狀態如下:

{ "addressResult": { "approved": true, "message": "address validation passed" }, "identityResult": { "approved": true, "message": "identity validation passed" } }

使用控制台功能可視化輸入和輸出數據流

您可以使用 Step Functions 主控台的資料流程模擬器或 [執行詳細資訊] 頁面中的 [進階檢視] 選項,以視覺化方式呈現工作流程中各狀態之間的輸入和輸出資料流