狀態機器資料 - AWS Step Functions

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

狀態機器資料

狀態機器資料的格式如下:

  • 狀態機器的初始輸入

  • 狀態之間傳遞的資料

  • 來自狀態機器的輸出

本節將說明 AWS Step Functions 會如何格式化和使用狀態機器的資料。

資料格式

狀態機數據由 JSON 文本表示。您可以使用 JSON 支援的任何資料類型,將值提供給狀態機器。

注意
  • JSON 文字格式的數字符合JavaScript語意。這些數字通常對應到雙精度 IEEE-854 值。

  • 以下是有效的 JSON 文字:

    • 獨立的引號分隔字串

    • 物件

    • 陣列

    • 數字

    • 布尔值

    • null

  • 狀態的輸出會成為下一個狀態的輸入。但是,您可以使用「輸入和輸出處理」來限制狀態處理輸入資料的子集。

狀態機器輸入/輸出

您可以通過兩種方式之一將初始輸入數據提供給AWS Step Functions狀態機。您可以在開始執StartExecution行時將資料傳遞至動作。您也可以從 Step Functions 主控台將資料傳遞至狀態機器。初始資料會傳送至狀態機器的 StartAt 狀態。如果沒有提供輸入,預設會是空的物件 ({})。

執行的輸出會由最後狀態 (terminal) 傳回。此輸出會在執行結果中以 JSON 文字呈現。

對於標準工DescribeExecution作流程,您可以使用外部呼叫者 (例如動作) 從執行歷程記錄擷取執行結果。您可以在「步驟函數」主控台上檢視執行結果。

對於 Express 工作流程,如果您啟用記錄功能,則可以從記CloudWatch錄擷取結果,或在 Step Functions 主控台中檢視和偵錯執行。如需詳細資訊,請參閱 記錄使用CloudWatch日誌在 Step Functions 主控台上檢視和偵錯執行

您還應該考慮與狀態機相關的配額。如需詳細資訊,請參閱 配額

狀態輸入/輸出

每個狀態的輸入皆包含先前狀態的 JSON 文字,或者針對 StartAt 狀態,則是要執行的輸入。某些流程控制狀態會將他們的輸入重複到他們的輸出中。

在以下範例中,狀態機器會同時新增兩個數字。

  1. 定義 AWS Lambda 函數。

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. 定義 狀態機器。

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. 開始執行以下 JSON 文字。

    { "numbers": [3, 4] }

    Add態會接收 JSON 文字,並將其傳遞給 Lambda 函數。

    Lambda 函數將計算結果返回到狀態。

    狀態會在它的輸出中傳回以下值。

    { "result": 7 }

    由於 Add 也是狀態機器中的最終狀態,此值會做為狀態機器的輸出傳回。

    如果最終狀態沒有傳回輸出,則狀態機器會傳回空的物件 ({})。

如需詳細資訊,請參閱 Step Functions 中的輸入和輸出處理