JSONPath パスの使用
ステートの管理とデータの変換
変数を使用したステート間のデータ受け渡しと JSONata を使用したデータ変換について説明します。
Amazon States Language では、パスは、JSON テキスト内でコンポーネントを識別するために使用できる $ で始まる文字列です。パスは JSONPathQueryLanguage が JSONPath に設定されている場合のみです。InputPath、ResultPath、および OutputPath に値を指定するときに、入力のサブセットにアクセスするパスを指定できます。
フィールド名に JsonPath ABNFmember-name-shorthand 定義に含まれていない文字が含まれている場合は、角かっこ表記を使用する必要があります。そのため、句読点などの特殊文字 (_ を除外) をエンコードするには、角かっこ表記を使用する必要があります。例えば、$.abc.['def ghi']。
リファレンスパス
リファレンスパスは、JSON 構造内の単一ノードのみを識別できるように構文が制限されたパスです。
-
オブジェクトのフィールドにアクセスするには、ドット (
.) と角括弧 ([ ]) のみを使用して表記します。 -
length()などの関数はサポートされていません。 -
subsetofなどのシンボリックではないレキシカル演算子はサポートされていません。 -
正規表現によるフィルタリングや、JSON 構造内の別の値の参照によるフィルタリングはサポートされていません。
-
@、,、:および?の演算子はサポートされていません。
例えば、if 状態入力データには次の値が含まれます。
{
"foo": 123,
"bar": ["a", "b", "c"],
"car": {
"cdr": true
}
}
次のリファレンスパスは以下を返します。
$.foo => 123
$.bar => ["a", "b", "c"]
$.car.cdr => true
特定の状態はパスおよびリファレンスパスを使用して、ステートマシンのフローの制御、または状態の設定やオプションを構成します。詳細については、「Modeling workflow input and output path processing with data flow simulator
配列の配列の平坦化
ステートマシンの Parallel ワークフローの状態 または Map 状態のワークフロー 状態により配列の配列が返される場合は、ResultSelector フィールドを使用してフラットな配列に変換できます。このフィールドを並列ステートまたはマップステートの定義に含めて、これらのステートの結果を操作できます。
配列を平坦化するには、次の例のように ResultSelector フィールド内で [*] の構文を使用します。
"ResultSelector": { "flattenArray.$": "$[*][*]" }
配列をフラット化する方法を示す例については、以下のチュートリアルのステップ 3 を参照してください。