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

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

TestState API を使用して状態をテストする

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

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

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

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

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パラメータResultPath、および OutputPath フィルターを適用したとします。呼び出しが失敗したとします。この場合、DEBUG レベルにはフィルターの適用に基づくデータ処理結果が次の順序で表示されます。

  • input — 未加工のステート入力

  • afterInputPath — Step Functions が InputPath フィルターを適用した後の入力。

  • afterParameters — Step Functions が Parameters フィルターを適用した後の有効な入力。

このレベルで利用できる診断情報は、定義したサービス統合入出力データ処理フローに関連する問題のトラブルシューティングに役立ちます。

次の図は、成功したテストのパスステートを示しています。このステートの [検査レベル][DEBUG] に設定されています。以下の画像の [入出力処理] タブには、このステートに提供された入力に Parameters を適用した結果が表示されます。

[Debug] レベルのテストに合格した選択されたステートの出力。

以下の画像は、[検査レベル][DEBUG] に設定されている場合にタスクステートに対して失敗したテストを示しています。以下の画像の [入出力処理タブ] には、障害発生時点までのステートの入出力データ処理結果が表示されます。

[Debug] レベルのテストに失敗したステートの出力。

TRACE inspectionLevel

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

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

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

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

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

次の図は、成功した HTTP タスクのテストを示しています。このステートの [検査レベル][TRACE] に設定されています。以下の画像の [HTTP リクエストおよびレスポンス] タブには、サードパーティー API コールの結果が表示されます。

[TRACE] レベルのテストに成功した、選択されたステートの出力。

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

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 の Inspector パネルで [ステートをテスト] を選択します。

  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 ポリシーの例については、「IAM TestState API を使用するための アクセス許可」を参照してください。

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

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

サポートされている状態は、 の TestState API を使用してテストできますAWS CLI。この 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

この例では、パス ステートを使用して、Step Functions が入出力データ処理フィルターを使用して入力 JSON データをフィルタリングおよび操作する方法を示しています。この例では、InputPathパラメータ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 を使用して、サードパーティー 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 タスクが指定されたサードパーティー 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 とそのインストール手順については、「」の「jq」を参照してくださいGitHub

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

が入出力データ処理フィルター InputPath、パラメータ ResultSelector、 ResultPath および を OutputPath 状態Step Functionsに適用する順序。

以下のリストは、図に示されている入力処理フィールドと出力処理フィールドの適用順序を示しています。

  1. ステート入力は、前のステートから現在のステートに渡された JSON データです。

  2. InputPath は未加工のステート入力の一部をフィルタリングします。

  3. パラメータタスクに渡す値のセットを設定します。

  4. タスクは作業を実行し、結果を返します。

  5. ResultSelector はタスク結果から除外する値のセットを選択します。

  6. 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 オブジェクト内の対応するフィールドにマッピングしています。

inspectionData オブジェクト項目と ASL 項目のマッピング。

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