AWS StepFunctionsでJSONPathからJSONataへの変換例

この記事を書いたチーム:frontier

JSONPath(ジェイソンパス)JSONata(ジェイソナタ)とは

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

JSONPathとは従来StepFunctionsでサポートされている言語です。一方JSONata2024年にStepFunctionsでサポートが開始された言語でよりシンプルに記載ができる言語です。
詳しくは以下を参照
AWS Step Functions が Variables と JSONata の変換で開発者のエクスペリエンスを簡素化 – AWS

 

AWS StepFunctionsとは

AWSのサーバーレスシステムでありLambdaS3など他AWSシステムとの連携を行うことができます。様々なシステムをパズルのように組み合わせて構築ができるので視覚的にフローが理解しやすく、コードに詳しくなくてもシステムを組みやすいです。また細かい設定を行う際はコードの形式に切り替えることもでき、応用性も優れています。
詳しくは以下の公式サイトを参照
Step Functions とは – AWS Step Functions

 

Mapstateでの変換例

今回はStepFunctions内でループ処理を行うMapStateを例として扱います。処理の内容としては入力された

という2つのジョブを2GlueDataBrewのジョブを並列で実行することで処理を行うものです。

JSONPath

JSONata

見比べてみるとJSONPathJSONataも全体的に大きくは変わらないですが出力(Output)の部分で異なっています。JSONPathではoutput/job1_20250722.csvを出力する際ResultSelectorを利用しています。ResultSelectorは値を加工するために利用する機能です。今回の場合だとState.Formatで入力値をファイルパスの中央に入れる加工を行っています。しかしその際中央に入れるはずの入力値を最後に記載する形式になっています。

一方JSONataではResultSelectorState.Formatなどの機能はありません。代わりにoutput内で簡潔に記載が可能になっています。ファイルパスのフォーマットも直感的にわかる形式になっています。今回はMapState単体の例を挙げましたがより複雑で大規模なシステムになるとJSONataはよりシンプルに記載できるためエラーを発見しやすく、整備性にも優れています。まだ実際の例自体は少ないですがAWS公式もJSONataを推奨していることもあり、今後はJSONataの作例が増えて作成しやすくなっていくはずです。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス