數據流模擬器 - AWS Step Functions

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

數據流模擬器

您可以在 Step Functions 主控台中設計、實作和偵錯工作流程。您也可以透過JsonPath輸入和輸出資料處理來控制工作流程中的資料流程。使用資料流程模擬器,您可以模擬工作流程程序資料在執行階段中任務狀態的順序。使用模擬器,您可以了解如何過濾和操作數據,因為它從一個狀態流到另一個狀態。它會模擬步驟函式用來處理和控制 JSON 資料流程的下列每個欄位:

InputPath

選取整個輸入有效負載的 WHERE 部分,以用作工作的輸入。如果您指定此欄位,「步驟函數」會先套用此欄位。

參數

調用任務之前輸入的外觀。透過此Parameters欄位,您可以建立索引鍵值配對的集合,這些索引鍵值配對會當做輸入傳遞至AWS 服務整合,例如AWS Lambda函數。這些值可以是靜態的,也可以是從狀態輸入或工作流程前後關聯物件動態選取的。

ResultSelector

決定要從工作輸出中選擇的項目。使用該ResultSelector字段,您可以創建鍵值對的集合,以替換狀態的結果並將ResultPath該集合傳遞給。

ResultPath

決定要放置工作輸出的位置。使用ResultPath來判斷狀態的輸出是其輸入的副本、產生的結果,還是兩者的組合。

OutputPath

決定要傳送至下一個狀態的內容。使用OutputPath,您可以過濾掉不需要的信息,並僅傳遞您關心的 JSON 數據部分。

使用資料流模擬器

模擬器會在您套用輸入和輸出資料處理欄位之前和之後,提供即時的資料side-by-side比較。若要使用模擬器,請指定 JSON 輸入。然後,通過每個輸入和輸出處理字段對其進行評估。模擬器會自動驗證您的 JSON 輸入並反白顯示任何語法錯誤。

若要使用資料流程模擬器

在下列步驟中,您會提供 JSON 輸入並套用InputPath參數欄位。您也可以套用其他可用欄位並檢視其輸出。

  1. 開啟步驟功能主控台

  2. 在導覽窗格中,選擇 [資料流程模擬器]。

  3. 在 [狀態] 輸入區域中,以下列 JSON 資料取代預先填入的範例 JSON 資料。然後選擇 Next (下一步)。

    { "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" } } }
  4. 對於 InputPath,輸入$.data.address以選取輸入 JSON 資料的位址節點。

    狀態輸入後 InputPath」方塊會顯示下列結果。

    { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
  5. 選擇 下一步

  6. 套用Parameters欄位以將結果 JSON 資料轉換為字串。若要轉換資料,請執行下列動作:

    1. 在「參數」方塊中,輸入下列程式碼以建立名為的字串addressString

      { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
  7. 在「參數之後篩選的輸入」方塊中,檢視Parameters欄位應用程式的結果。

使用資料流程模擬器的注意事項

在使用資料流程模擬器之前,請考慮其限制,包括但不限於:

  • 不支援的篩選器

    模擬器中的篩選器運算式與 Step Functions 服務中的行為不同。這包括使用下列語法的運算式:[?(expression)]。以下是不支援的運算式清單。如果使用,這些運算式在評估後可能不會傳回預期的結果。

    • $..book[?(@.isInStock==true)]

    • $..book[?(@.price > 10.0)].title

  • 單一項目陣列的JsonPath評估不正確

    如果您使用返回單個數組項目的JsonPath表達式過濾數據,則模擬器返回沒有數組的項目。例如,考慮下面的數據數組,稱為items

    { "items": [ { "name": "shoe", "color": "blue", "comment": "nice shoe" }, { "name": "hat", "color": "red" }, { "name": "shirt", "color": "yellow" } ] }

    鑑於此items數組,如果您$..commentInputPath字段中輸入,則需要以下輸出:

    [ "nice shoe" ]

    但是,數據流模擬器返回以下輸出:

    "nice shoe"

    對於包含多個項目的數組的JsonPath評估,模擬器返回預期的輸出。