選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 TestState API 在 Step Functions 中測試狀態

焦點模式
使用 TestState API 在 Step Functions 中測試狀態 - AWS Step Functions

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

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

TestState API 接受單一狀態的定義並執行它。您可以在不建立狀態機器或更新現有狀態機器的情況下測試狀態。

使用 TestState API,您可以測試下列項目:

若要測試狀態,您也可以使用 Step Functions主控台AWS Command Line Interface (AWS CLI)、 或 SDK。

TestState API 會擔任 IAM 角色,該角色必須包含狀態存取之資源的必要IAM許可。如需狀態可能需要之許可的相關資訊,請參閱 IAM 使用 TestState API 的許可

使用 TestState API 的考量

使用 TestState API,您一次只能測試一個狀態。您可以測試的狀態包括下列項目:

使用 TestState API 時,請記住下列考量事項。

在 TestState API 中使用檢查層級

若要使用 TestState API 測試狀態,請提供該狀態的定義。然後,測試會傳回輸出。對於每個狀態,您可以指定要在測試結果中檢視的詳細資訊量。這些詳細資訊提供有關您測試狀態的其他資訊。例如,如果您已使用任何輸入和輸出資料處理篩選條件,例如 InputPathResultPath 狀態,您可以檢視中繼和最終資料處理結果。

Step Functions 提供下列層級來指定您要檢視的詳細資訊:

所有這些層級也會傳回 statusnextState 欄位。 會status指出狀態執行的狀態。例如,SUCCEEDEDRETRIABLEFAILEDCAUGHT_ERRORnextState表示要轉換到的下一個狀態的名稱。如果您尚未在定義中定義下一個狀態,此欄位會傳回空值。

如需在Step Functions主控台和 中使用這些檢查層級測試狀態的相關資訊AWS CLI,請參閱 測試狀態 (主控台)使用 測試狀態 AWS CLI

INFO inspectionLevel

如果測試成功,此層級會顯示狀態輸出。如果測試失敗,此層級會顯示錯誤輸出。根據預設,如果您未指定關卡, Step Functions會將檢測關卡設定為 INFO

下圖顯示成功通過狀態的測試。此狀態的檢查層級設定為 INFO,且狀態的輸出會顯示在輸出索引標籤中。

通過測試的 INFO 層級輸出螢幕擷取畫面。

下圖顯示成功通過狀態的測試。此狀態的檢查層級設定為 INFO,且狀態的輸出會顯示在輸出索引標籤中。

通過測試的 INFO 層級輸出螢幕擷取畫面。

下圖顯示當檢測層級設為 INFO 時,任務狀態失敗的測試。輸出索引標籤會顯示錯誤輸出,其中包含錯誤名稱和該錯誤原因的詳細說明。

INFO 層級的輸出螢幕擷取畫面,用於失敗的測試。

下圖顯示當檢測層級設為 INFO 時,任務狀態失敗的測試。輸出索引標籤會顯示錯誤輸出,其中包含錯誤名稱和該錯誤原因的詳細說明。

INFO 層級的輸出螢幕擷取畫面,用於失敗的測試。

DEBUG inspectionLevel

如果測試成功,此層級會顯示狀態輸出和輸入和輸出資料處理的結果。

如果測試失敗,此層級會顯示錯誤輸出。此層級會顯示故障點之前的中繼資料處理結果。例如,假設您測試了叫用 Lambda函數的任務狀態。假設您已將 InputPath在 Step Functions 中使用 ResultPath 指定狀態輸出參數使用 OutputPath 篩選狀態輸出篩選條件套用至任務狀態。表示調用失敗。在此情況下,DEBUG關卡會根據篩選條件的應用程式,依下列順序顯示資料處理結果:

  • input – 原始狀態輸入

  • afterInputPath – 之後的輸入會Step Functions套用InputPath篩選條件。

  • afterParameters – 之後的有效輸入會Step Functions套用Parameters篩選條件。

此層級中可用的診斷資訊可協助您針對您可能已定義的服務整合輸入和輸出資料處理流程相關問題進行疑難排解。

下圖顯示成功通過狀態的測試。此狀態的檢查層級設定為 DEBUG。下圖中的輸入/輸出處理索引標籤顯示在此狀態提供的輸入Parameters上應用程式 的結果。

DEBUG 層級的輸出螢幕擷取畫面,用於通過的測試。

下圖顯示成功通過狀態的測試。此狀態的檢查層級設定為 DEBUG。下圖中的輸入/輸出處理索引標籤顯示在此狀態提供的輸入Parameters上應用程式 的結果。

DEBUG 層級的輸出螢幕擷取畫面,用於通過的測試。

下圖顯示當檢測層級設定為 DEBUG 時,任務狀態失敗的測試。下圖中的輸入/輸出處理索引標籤會顯示狀態直至故障點的輸入和輸出資料處理結果。

DEBUG 層級的輸出螢幕擷取畫面,用於失敗的測試。

下圖顯示當檢測層級設定為 DEBUG 時,任務狀態失敗的測試。下圖中的輸入/輸出處理索引標籤會顯示狀態直至故障點的輸入和輸出資料處理結果。

DEBUG 層級的輸出螢幕擷取畫面,用於失敗的測試。

TRACE inspectionLevel

Step Functions 提供 TRACE 層級來測試 HTTP 任務。此層級會傳回 HTTP 請求的相關資訊,該請求會Step Functions發出 HTTPS API 傳回的回應。回應可能包含資訊,例如標頭和請求內文。此外,您可以在此層級檢視輸入和輸出資料處理的狀態輸出和結果。

如果測試失敗,此層級會顯示錯誤輸出。

此層級僅適用於 HTTP 任務。如果您將此層級用於其他狀態類型, 會Step Functions擲出錯誤。

當您將檢測層級設定為 TRACE 時,您也可以檢視 EventBridge 連線中包含的秘密。若要這樣做,您必須在 TestState API true中將 revealSecrets 參數設定為 。此外,您必須確保呼叫 TestState API IAM的使用者具有 states:RevealSecrets動作的許可。如需設定 states:RevealSecrets 許可IAM的政策範例,請參閱 IAM 使用 TestState API 的許可。如果沒有此許可, 會Step Functions擲回拒絕存取的錯誤。

如果您將 revealSecrets 參數設定為 false, Step Functions 會省略 HTTP 請求和回應資料中的所有秘密。

下圖顯示 HTTP 任務測試成功。此狀態的檢查層級設定為 TRACE。下圖中的 HTTP 請求和回應索引標籤會顯示 HTTPS API 呼叫的結果。

TRACE 層級的輸出螢幕擷取畫面,用於通過的測試。

下圖顯示 HTTP 任務測試成功。此狀態的檢查層級設定為 TRACE。下圖中的 HTTP 請求和回應索引標籤會顯示 HTTPS API 呼叫的結果。

TRACE 層級的輸出螢幕擷取畫面,用於通過的測試。

IAM 使用 TestState API 的許可

呼叫 TestState API IAM的使用者必須具有執行 states:TestStateiam:PassRole動作的許可。此外,如果您將 revealSecrets 參數設定為 true,您必須確定IAM使用者具有執行states:RevealSecrets動作的許可。如果沒有此許可, 會Step Functions擲回拒絕存取的錯誤。

您也必須確認您的執行角色包含狀態所存取資源所需的IAM許可。如需狀態可能需要之許可的相關資訊,請參閱管理執行角色

下列IAM政策範例會設定 states:TestStateiam:PassRolestates:RevealSecrets許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:TestState", "states:RevealSecrets", "iam:PassRole" ], "Resource": "*" } ] }

測試狀態 (主控台)

您可以在 主控台中測試狀態,並檢查狀態輸出或輸入和輸出資料處理流程。對於 HTTP 任務,您可以測試原始 HTTP 請求和回應。

測試狀態
  1. 開啟 Step Functions 主控台

  2. 選擇建立狀態機器以開始建立狀態機器,或選擇現有的狀態機器。

  3. 在 Workflow Studio 設計模式的 中,選擇您要測試的狀態。

  4. 在 Workflow Studio Inspector 面板面板中選擇測試狀態

  5. 測試狀態對話方塊中,執行下列動作:

    1. 針對執行角色,選擇要測試狀態的執行角色。請確定您擁有要測試之狀態的必要IAM許可

    2. (選用) 提供您選擇的測試狀態所需的任何 JSON 輸入。

    3. 針對檢測層級,根據您要檢視的值選取下列其中一個選項:

      • INFO – 如果測試成功,在輸出索引標籤中顯示狀態輸出。如果測試失敗,INFO 會顯示錯誤輸出,其中包含錯誤名稱和該錯誤原因的詳細說明。根據預設,如果您未選取關卡, Step Functions會將檢測關卡設定為 INFO

      • DEBUG – 如果測試成功,會顯示狀態輸出和輸入和輸出資料處理的結果。如果測試失敗,DEBUG 會顯示錯誤輸出,其中包含錯誤名稱和該錯誤原因的詳細說明。

      • TRACE – 顯示原始 HTTP 請求和回應,對於驗證標頭、查詢參數和其他 API 特定詳細資訊很有用。此選項僅適用於 HTTP 任務

        或者,您可以選擇顯示秘密。結合 TRACE,此設定可讓您查看EventBridge連線插入的敏感資料,例如 API 金鑰。您用來存取主控台IAM的使用者身分必須具有執行 states:RevealSecrets動作的許可。如果沒有此許可, 會在您開始測試時Step Functions擲回拒絕存取的錯誤。如需設定 states:RevealSecrets 許可IAM的政策範例,請參閱 IAM 使用 TestState API 的許可

    4. 選擇開始測試

使用 測試狀態 AWS CLI

您可以使用 中的 TestState API 來測試支援的狀態AWS CLI。此 API 接受 狀態的定義並執行它。

對於每個狀態,您可以指定要在測試結果中檢視的詳細資訊量。這些詳細資訊提供有關狀態執行的其他資訊,包括其輸入和輸出資料處理結果,以及 HTTP 請求和回應資訊。下列範例示範您可以為 TestState API 指定的不同檢查層級。請記得將斜體文字取代為您的資源特定資訊。

本節包含下列範例,說明如何使用 Step Functions中提供的不同檢查層級AWS CLI:

範例 1:使用 INFO inspectionLevel 測試選擇狀態

若要使用 中的 INFO inspectionLevel 測試狀態 AWS CLI,請執行 test-state命令,如下列範例所示。

aws stepfunctions test-state \ --definition '{"Type": "Choice", "Choices": [{"Variable": "$.number", "NumericEquals": 1, "Next": "Equals 1"}, {"Variable": "$.number", "NumericEquals": 2, "Next": "Equals 2"}], "Default": "No Match"}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --input '{"number": 2}'

此範例使用選擇狀態,根據您提供的數值輸入來判斷狀態的執行路徑。根據預設,INFO如果您未Step Functions設定關卡, 會將 inspectionLevel 設定為 。

Step Functions 會傳回下列輸出。

{ "output": "{\"number\": 2}", "nextState": "Equals 2", "status": "SUCCEEDED" }

範例 2:使用 DEBUG inspectionLevel 在通過狀態下偵錯輸入和輸出資料處理

若要使用 中的 DEBUG inspectionLevel 測試狀態 AWS CLI,請執行 test-state命令,如下列範例所示。

aws stepfunctions test-state \ --definition '{"Type": "Pass", "InputPath": "$.payload", "Parameters": {"data": 1}, "ResultPath": "$.result", "OutputPath": "$.result.data", "Next": "Another State"}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --input '{"payload": {"foo": "bar"}}' \ --inspection-level DEBUG

此範例使用 通過工作流程狀態 狀態來示範如何使用輸入和輸出資料處理Step Functions篩選條件來篩選和操作輸入 JSON 資料。此範例使用這些篩選條件:InputPath在 Step Functions 中使用 ResultPath 指定狀態輸出參數使用 OutputPath 篩選狀態輸出

Step Functions 會傳回下列輸出。

{ "output": "1", "inspectionData": { "input": "{\"payload\": {\"foo\": \"bar\"}}", "afterInputPath": "{\"foo\":\"bar\"}", "afterParameters": "{\"data\":1}", "afterResultSelector": "{\"data\":1}", "afterResultPath": "{\"payload\":{\"foo\":\"bar\"},\"result\":{\"data\":1}}" }, "nextState": "Another State", "status": "SUCCEEDED" }

範例 3:使用 TRACE inspectionLevel 和 revealSecrets 來檢查傳送至 HTTPS API 的 HTTP 請求

若要使用 TRACE inspectionLevel 和 中的 revealSecrets 參數來測試 HTTP 任務 AWS CLI,請執行 test-state命令,如下列範例所示。

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --inspection-level TRACE \ --reveal-secrets

此範例會測試 HTTP 任務是否呼叫指定的 HTTPS API,https://httpbin.org/。它也會顯示 API 呼叫的 HTTP 請求和回應資料。

{ "output": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "inspectionData": { "input": "{}", "afterInputPath": "{}", "afterParameters": "{\"Method\":\"GET\",\"Authentication\":{\"ConnectionArn\":\"arn:aws:events:us-east-1:123456789012:connection/foo/a59c10f0-a315-4c1f-be6a-559b9a0c6250\"},\"ApiEndpoint\":\"https://httpbin.org/get\",\"Headers\":{\"definitionHeader\":\"h1\"},\"RequestBody\":{\"message\":\"Hello from Step Functions!\"},\"QueryParameters\":{\"queryParam\":\"q1\"}}", "result": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultSelector": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultPath": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "request": { "protocol": "https", "method": "GET", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1", "headers": "[definitionHeader: h1, Authorization: Basic XXXXXXXX, CustomHeader1: CustomHeaderValue1, User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1, Range: bytes=0-262144]", "body": "{\"message\":\"Hello from Step Functions!\",\"BodyKey1\":\"BodyValue1\"}" }, "response": { "protocol": "https", "statusCode": "200", "statusMessage": "OK", "headers": "[date: Tue, 21 Nov 2023 00:06:17 GMT, content-type: application/json, content-length: 620, server: gunicorn/19.9.0, access-control-allow-origin: *, access-control-allow-credentials: true]", "body": "{\n \"args\": {\n \"QueryParam1\": \"QueryParamValue1\", \n \"queryParam\": \"q1\"\n }, \n \"headers\": {\n \"Authorization\": \"Basic XXXXXXXX\", \n \"Content-Type\": \"application/json; charset=UTF-8\", \n \"Customheader1\": \"CustomHeaderValue1\", \n \"Definitionheader\": \"h1\", \n \"Host\": \"httpbin.org\", \n \"Range\": \"bytes=0-262144\", \n \"Transfer-Encoding\": \"chunked\", \n \"User-Agent\": \"Amazon|StepFunctions|HttpInvoke|us-east-1\", \n \"X-Amzn-Trace-Id\": \"Root=1-0000000-0000-0000-0000-000000000000\"\n }, \n \"origin\": \"12.34.567.891\", \n \"url\": \"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"\n}\n" } }, "status": "SUCCEEDED" }

範例 4:使用 jq 公用程式來篩選和列印 TestState API 傳回的回應

TestState API 會在回應中將 JSON 資料傳回為逸出字串。下列AWS CLI範例延伸範例 3,並使用 jq公用程式來篩選和列印 TestState API 以人類可讀格式傳回的 HTTP 回應。如需 jq 及其安裝說明的詳細資訊,請參閱 GitHub 上的 jq

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --inspection-level TRACE \ --reveal-secrets \ | jq '.inspectionData.response.body | fromjson'

下列範例顯示以人類可讀格式傳回的輸出。

{ "args": { "QueryParam1": "QueryParamValue1", "queryParam": "q1" }, "headers": { "Authorization": "Basic XXXXXXXX", "Content-Type": "application/json; charset=UTF-8", "Customheader1": "CustomHeaderValue1", "Definitionheader": "h1", "Host": "httpbin.org", "Range": "bytes=0-262144", "Transfer-Encoding": "chunked", "User-Agent": "Amazon|StepFunctions|HttpInvoke|us-east-1", "X-Amzn-Trace-Id": "Root=1-0000000-0000-0000-0000-000000000000" }, "origin": "12.34.567.891", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1" }

測試和偵錯輸入和輸出資料流程

TestState API 有助於測試和偵錯流經工作流程的資料。本節提供一些關鍵概念,並說明如何將 TestState 用於此目的。

重要概念

在 中Step Functions,在 JSON 資料通過狀態機器時篩選和操作 JSON 資料的程序稱為輸入和輸出處理。如需其運作方式的相關資訊,請參閱在 Step Functions 中處理輸入和輸出

Amazon States Language (ASL) 中的所有狀態類型 (任務、平行、映射、通過、等待、選擇、成功和失敗) 共用一組常用欄位,用於篩選和操作通過它們的 JSON 資料。這些欄位為:InputPath參數在 Step Functions 中使用 ResultPath 指定狀態輸出ResultSelector使用 OutputPath 篩選狀態輸出。每個欄位的支援因狀態而異。在執行時間, 會以特定順序Step Functions套用每個欄位。下圖顯示將這些欄位套用至任務狀態內資料的順序:

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

下列清單說明圖表中顯示的輸入和輸出處理欄位的應用程式順序。

  1. 狀態輸入是從先前狀態傳遞至目前狀態的 JSON 資料。

  2. InputPath 會篩選原始狀態輸入的一部分。

  3. 參數 設定要傳遞至任務的一組值。

  4. 任務會執行工作並傳回結果。

  5. ResultSelector 會選取要從任務結果保留的一組值。

  6. 在 Step Functions 中使用 ResultPath 指定狀態輸出 會將結果與原始狀態輸入合併,或使用其取代結果。

  7. 使用 OutputPath 篩選狀態輸出 會篩選輸出的一部分,以傳遞至下一個狀態。

  8. 狀態輸出是從目前狀態傳遞到下一個狀態的 JSON 資料。

這些輸入和輸出處理欄位是選用的。如果您在狀態定義中未使用任何這些欄位,任務將耗用原始狀態輸入,並將任務結果傳回為狀態輸出。

使用 TestState 檢查輸入和輸出處理

當您呼叫 TestState API 並將 inspectionLevel 參數設定為 時DEBUG,API 回應會包含名為 的物件inspectionData。此物件包含欄位,可協助您檢查資料在執行時在 狀態內如何篩選或操作。下列範例顯示任務狀態的 inspectionData 物件。

"inspectionData": { "input": string, "afterInputPath": string, "afterParameters": string, "result": string, "afterResultSelector": string, "afterResultPath": string, "output": string }

在此範例中,包含 after 字首的每個欄位都會顯示套用特定欄位之後的資料。例如, afterInputPath顯示套用 InputPath 欄位來篩選原始狀態輸入的效果。下圖會將每個 ASL 定義欄位映射至inspectionData物件中的對應欄位:

顯示 ASL 欄位映射至 inspectionData 的圖表。

如需使用 TestState API 對輸入和輸出處理進行偵錯的範例,請參閱以下內容:

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。