Step Functions で TestState API を使用してステートをテストする - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions で TestState API を使用してステートをテストする

TestState API は 1 つのステートの定義を受け入れ、それを実行します。ステートマシンを作成したり、既存のステートマシンを更新したりしなくても、ステートをテストできます。

TestState API を使用すると、以下をテストできます。

ステートをテストするには、Step Functions コンソールAWS Command Line Interface (AWS CLI)、または SDK を使用することもできます。

TestState API は IAM ロールを想定しており、そのロールにはステートがアクセスするリソースに必要な IAM アクセス許可が含まれている必要があります。ステートに必要なアクセス許可については、「TestState API を使用するための IAM アクセス許可」を参照してください。

TestState API の使用に関する考慮事項

TestState API を使用すると、一度に 1 つのステートのみテストできます。テストできるステートは次のとおりです。

TestState API を使用する場合は、次の考慮事項に留意してください。

TestState API で検査レベルを使用する

TestState API を使用してステートをテストするには、そのステートの定義を指定します。その後、テストは出力を返します。ステートごとに、テスト結果に表示したい詳細の量を指定できます。これらの情報は、テストしているステートに関する追加情報を提供します。例えば、InputPath または ResultPath ステート内で入出力データ処理フィルターを使用したことがある場合は、中間データ処理結果と最終データ処理結果を表示できます。

Step Functions には以下のレベルがあり、表示したい詳細を指定できます。

これらのレベルはすべて、status および nextState フィールドも返します。status は、ステート実行のステータスを示します。例えば、SUCCEEDEDFAILEDRETRIABLE、および CAUGHT_ERROR などです。nextState は、次に遷移するステートの名前を示します。定義に次のステートを定義していない場合、このフィールドは空の値を返します。

Step Functions コンソールおよび AWS CLI でこれらの検査レベルを使用してステートをテストする方法については、「ステートのテスト (コンソール)」および「AWS CLI を使用してステートをテストする」を参照してください。

INFO inspectionLevel

テストが成功すると、このレベルにはステート出力が表示されます。テストが失敗した場合、このレベルにはエラー出力が表示されます。レベルを指定しない場合、デフォルトで Step Functions は [検査レベル][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] に設定されている場合にタスクステートに対して失敗したテストを示しています。以下の画像の [入出力処理タブ] には、障害発生時点までのステートの入出力データ処理結果が表示されます。

失敗したテストの DEBUG レベルでの出力のスクリーンショット。

TRACE inspectionLevel

Step Functions は HTTP タスクをテストするための [TRACE] レベルを提供します。このレベルは、HTTPS API が返す および レスポンスStep Functionsを行う HTTP リクエストに関する情報を返します。レスポンスには、ヘッダーやリクエスト本文などの情報が含まれる場合があります。さらに、このレベルでの入出力データ処理のステート出力と結果も表示できます。

テストが失敗した場合、このレベルにはエラー出力が表示されます。

このレベルは HTTP タスクにのみ適用されます。このレベルを他のステートタイプに使用すると、Step Functions はエラーをスローします。

[検査レベル][TRACE] に設定すると、EventBridge 接続に含まれるシークレットも表示できます。そのためには、TestState API で revealSecrets パラメータを true に設定する必要があります。さらに、TestState API を呼び出す IAM ユーザーに states:RevealSecrets アクションのアクセス許可があることを確認する必要があります。states:RevealSecrets アクセス許可を付与する IAM ポリシーの例については、「TestState API を使用するための IAM アクセス許可」を参照してください。このアクセス許可がない場合、Step Functions はアクセス拒否エラーをスローします。

revealSecrets パラメータを false に設定すると、Step Functions はHTTP リクエストとレスポンスのデータに含まれるすべてのシークレットを省略します。

次の図は、成功した HTTP タスクのテストを示しています。このステートの [検査レベル][TRACE] に設定されています。次の図の HTTP リクエストとレスポンスタブは、HTTPS API コールの結果を示しています。

合格したテストの TRACE レベルでの出力のスクリーンショット。

TestState API を使用するための IAM アクセス許可

TestState API を呼び出す IAM ユーザーには、states:TestState および iam:PassRole アクションを実行するアクセス許可が必要です。さらに、RevealSecrets パラメータを true に設定する場合は、IAM ユーザーが states:RevealSecrets アクションを実行するアクセス許可を持っていることを確認する必要があります。このアクセス許可がない場合、Step Functions はアクセス拒否エラーをスローします。

また、IAM ステートがアクセスしているリソースに必要なアクセス許可が実行ロールに含まれていることも確認する必要があります。ステートが必要とするアクセス許可については、「実行ロールの管理」を参照してください。

次の IAM ポリシー例では、states:TestStateiam:PassRole、および states: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 の インスペクターパネル パネルで [ステートをテスト] を選択します。

  5. [ステートをテスト] ダイアログボックスで、次の操作を行います。

    1. [実行ロール] では、ステートをテストする実行ロールを選択します。テストするステートに必要な IAM アクセス許可があることを確認してください。

    2. (オプション) 選択したステートをテストするために必要な JSON 入力を入力します。

    3. [検査レベル] では、表示したい値に基づいて以下のオプションのいずれかを選択します。

      • INFO — テストが成功すると、[出力] タブにステート出力が表示されます。テストが失敗した場合、[INFO] はエラー名とそのエラーの原因の詳細な説明を含むエラー出力を表示します。レベルを選択しない場合、Step Functions はデフォルトで [検査レベル][INFO] に設定します。

      • DEBUG — テストが成功した場合、ステート出力と入出力データ処理の結果を表示します。テストが失敗した場合、[DEBUG] はエラー名とそのエラーの原因の詳細な説明を含むエラー出力を表示します。

      • TRACE — 未加工の HTTP リクエストとレスポンスを表示し、ヘッダー、クエリパラメータ、その他の API 固有の詳細を確認するのに役立ちます。このオプションは HTTP タスクでのみ使用できます。

        オプションで [シークレットを公開] を選択することもできます。この設定を [TRACE] と組み合わせると、API キーなど、EventBridge 接続によって挿入される機密データを表示できます。コンソールへのアクセスに使用する IAM ユーザー ID には、states:RevealSecrets アクションを実行するアクセス許可が必要です。このアクセス許可がない場合、Step Functions はテストの開始時にアクセス拒否エラーをスローします。states:RevealSecrets アクセス許可を付与する IAM ポリシーの例については、「TestState API を使用するための IAM アクセス許可」を参照してください。

    4. [テストを開始] を選択します。

AWS CLI を使用してステートをテストする

サポートされているステートは、AWS CLI の TestState API を使用してテストできます。この API はステートの定義を受け入れて実行します。

ステートごとに、テスト結果に表示したい詳細の量を指定できます。これらの詳細から、入出力データ処理結果や HTTP リクエスト/レスポンス情報など、ステートの実行に関する追加情報が得られます。以下の例は、TestState API に指定できるさまざまな検査レベルを示しています。イタリック体のテキストを、リソース固有の情報に必ず置き換えてください。

このセクションには、Step Functions が AWS CLI で提供するさまざまな検査レベルの使用方法を示す次の例が含まれています。

例 1: INFO inspectionLevel を使用して Choice ステートをテストする

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}'

この例では、Choice ステートを使用して、指定した数値入力に基づいてステートの実行パスを決定します。レベルを設定しない場合、 Step Functions はデフォルトで inspectionLevelINFO に設定します。

Step Functions は次の出力を返します。

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

例 2: DEBUG InspectionLevel を使用して Pass ステートの入出力データ処理をデバッグする

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

この例では、Pass ワークフロー状態 ステートを使用して、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 データをフィルタリングして操作するプロセスを入出力処理と呼びます。この仕組みについては、「Step Functions の入力および出力処理」を参照してください。

Amazon States Language (ASL) のすべてのステートタイプ (Task、Parallel、Map、Pass、Wait、Choice、Succeed、Fail) は、それらを通過する JSON データをフィルタリングし、操作するための共通のフィールドセットを共有しています。これらのフィールドは、InputPathパラメータResultSelectorStep Functions で ResultPath を使用して状態出力を指定する、および OutputPath を使用した状態出力のフィルタリング です。各フィールドのサポートはステートによって異なります。実行時には、Step Functions は各フィールドを特定の順序で適用します。以下の図は、これらのフィールドがタスクステート内のデータに適用される順序を示しています。

フィルターの順序: InputPath、Parameters、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 プレフィックスを含む各フィールドには、特定のフィールドが適用された後のデータが表示されます。例えば、afterInputPathInputPath フィールドを適用して未加工のステート入力をフィルタリングしたときの効果を示しています。以下の図は、各 ASL 定義フィールドを inspectionData オブジェクト内の対応するフィールドにマッピングしています。

ASL フィールドと inspectionData のマッピングを示す図。

TestState API を使用して入出力処理をデバッグする例については、以下を参照してください。