

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

# 在 Step Functions 中處理輸入和輸出
<a name="concepts-input-output-filtering"></a>

**使用變數和 JSONata 管理狀態**  
Step Functions 最近新增了變數和 JSONata 來管理狀態和轉換資料。  
在部落格文章中進一步了解 [簡化開發人員在 中使用變數和 JSONata 的體驗 AWS Step Functions](https://aws.amazon.com/blogs/compute/simplifying-developer-experience-with-variables-and-jsonata-in-aws-step-functions/) 

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

使用 JSONata，您可以從 擷取狀態輸入`$states.input`。您的狀態機器執行也會在 中提供該初始輸入資料[前後關聯物件](input-output-contextobject.md)。您可以從 擷取工作流程中任何時間點的原始狀態機器輸入`$states.context.Execution.Input`。

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

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

**使用 JSONata 處理輸入和輸出**

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

下圖顯示 JSON 資訊如何通過 JSONata 任務狀態。

![流程圖顯示狀態輸入在任務狀態 JSONata 中傳遞至動作，然後傳遞至狀態輸出或變數。](https://docs.aws.amazon.com/zh_tw/step-functions/latest/dg/images/vars-jsonata.png)


**使用 JSONPath 處理輸入和輸出**

**管理狀態和轉換資料**  
了解如何[使用變數在狀態與使用 JSONata 轉換資料之間傳遞資料](workflow-variables.md)。 [ JSONata](transforming-data.md)

對於使用 JSONPath 的狀態機器，下列欄位控制從狀態到狀態的資料流程：`InputPath`、`Parameters`、`ResultPath`、 `ResultSelector`和 `OutputPath`。每個 JSONPath 欄位都可以在工作流程中的每個狀態移動時操作 JSON。

JSONPath 欄位可以使用[路徑](amazon-states-language-paths.md)從輸入或結果中選取 JSON 的部分。路徑是以 開頭的字串`$`，可識別 JSON 文字中的節點。Step Functions 路徑使用 [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) 語法。

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

![篩選條件順序：InputPath、參數、ResultSelector、ResultPath 和 OutputPath。](https://docs.aws.amazon.com/zh_tw/step-functions/latest/dg/images/vars-jsonpath.png)


**Topics**
+ [使用變數在狀態之間傳遞資料](workflow-variables.md)
+ [在 Step Functions 中使用 JSONata 轉換資料](transforming-data.md)
+ [從 Step Functions 中的內容物件存取執行資料](input-output-contextobject.md)
+ [使用 JSONPath 路徑](amazon-states-language-paths.md)
+ [在 Step Functions 工作流程中操作參數](input-output-inputpath-params.md)
+ [範例：使用 Step Functions 工作流程中的路徑處理狀態資料](input-output-example.md)
+ [在 Step Functions 中使用 ResultPath 指定狀態輸出](input-output-resultpath.md)
+ [Step Functions 中的映射狀態輸入和輸出欄位](input-output-fields-dist-map.md)