3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Step Functionsの作成に役立つワークフロースタジオ上の便利機能

Posted at

はじめに

AWS Step Functionsのワークフロー作成時に知っておくと楽になるTipsの紹介をします。

Step FunctionsはAWSコンソールのワークフロースタジオ上でぽちぽち作成を行うことができますが、
設定値の記法の独特さや(以前のJSONPath・新しく追加されたJSONata)、ワークフローをデバックしたい場合の方法などが作成時の悩みです。

ただ、ここ最近このあたりの使い勝手が改善しており、アップデートされて使いやすくなったワークフロースタジオの機能を紹介します。

便利機能

① JSONataのコード補完

既存のJSONPath形式に加えて、新しくクエリ言語のJSONataがサポートされました。
JSONata設定にした場合、ワークフローのエディタ上でコード補完が効くようになっています。

まずはステートマシンを新規作成して、Passステートをフローに追加します。

スクリーンショット 2024-12-31 12.41.10.png

出力エディタに下記のようにJSONataの必須項目を記載すると、エディタ内でコード補完が効くようになります

"{%%}"

スクリーンショット 2024-12-31 12.42.59.png

まず、JSONata記法の起点となる$を入力してみます。
すると、それに続いて書けるコード候補がサジェストされるようになります。

スクリーンショット 2024-12-31 12.44.00.png

サジェスト通りstatesを選択(enter or クリック)してみましょう。
$statesの後は、.つなぎで記載していくため、$states.まで入力してみます。

スクリーンショット 2024-12-31 12.47.10.png

すると、input / context のサジェストが現れました。
ちなみに、inputはステートへの入力値を取得する用途で使用します。contextは、起動ステートマシンの情報を取得する用途で使用します。

(参考)inputについて

(参考)contextについて

context.まで入力し、そのサジェストで出てきたStateを入力、さらに.でつないで出てきた、EnteredTimeまで入力してみます。

スクリーンショット 2024-12-31 13.42.04.png

最終的に、コード補完のお陰で、ステート処理の開始時間を参照するところまでスムーズに到達することができました。

"{% $states.context.State.EnteredTime %}"

inputも同様に、コード補完を活かして、$states.inputまで書き進めます。inputの先は任意の入力値となるため、コード補完は出ません。設定したい任意のKey名にします。

"{% $states.input.text %}"

最終的にcontextの情報とinputの情報を出力で渡してみるようにしましょう。

{
  "context": "{% $states.context.StateMachine.Name %}",
  "text": "{% $states.input.text %}"
}

スクリーンショット 2024-12-31 12.58.04.png

変数のコード補完もできるようになっています。
試しに変数タブを開き、下記のmyNumberという変数を設定してみます。

{
  "myNumber": 0

}

スクリーンショット 2024-12-31 13.45.16.png

次に既存のPassステートの次にもう一つPassステートを追加し、出力エディタで変数を参照してみます。
スクリーンショット 2024-12-31 13.45.55.png

"{% $m %}"まで書き進めると、下記のようにコード補完が効いてサジェストされています!
スクリーンショット 2024-12-31 13.47.16.png

ここまでが補完機能の説明になります。

② JSONata専用エディタ

JSONata専用のエディターも使用することができます。このエディターはフォームエリア全体の編集エディターではなく、選択したJSONata式1つに対しての専用エディターになっています。

スクリーンショット 2024-12-31 13.49.28.png

専用エディタを開くにはJSONata式の右側に表示されている「✏️」マークをクリックします。

スクリーンショット 2024-12-31 13.01.55.png

変更を保存して閉じるを押すと、専用エディタでの変更内容が反映されます。

③ テスト実行

出力式が完成したので、意図通り動くか確認してみたいです。
一昔前まではワークフローを保存し、ステートマシンを実際に起動してみないと動作確認ができなかったのですが、
2023年11月のTestAPIの新規追加により、ワークフローの作成・編集の更新前に、ステートごとに単体の動作確認ができるようになっています。

テストを行うにはテスト状態というボタンを押下します。

スクリーンショット 2024-12-31 13.54.12.png

モーダルが立ち上がります。

スクリーンショット 2024-12-31 13.55.04.png

状態の入力欄に、下記のJSONを入力して、テストを開始を実行してみます。

{
  "text" : "テストです"
}

すると、Pass 成功しましたの表示とともに、右側には状態の出力欄に出力内容が表示されました。

スクリーンショット 2024-12-31 13.56.43.png

入力内容を変えてテストすることで、状態の出力内容がどう変わるかをテストすることができます。
また、テストを行った際、エラーの発生や内容の変更で、出力内容のJSONを変更したくなった場合、
エディタ上で修正し、右下の変更を適用して閉じるを押下すると変更点を実際のステートマシンの内容に反映することができます。

試しに出力内容を変更してみましょう

下記のようにtext部分を書き換えてみます。
"text": "{% $states.input.text & '!!!' %}"


{
  "context": "{% $states.context.State.EnteredTime %}",
  "text": "{% $states.input.text & '!!!' %}"
}

テスト実行すると、修正が反映されて、出力内容が変化しています。

スクリーンショット 2024-12-31 13.59.34.png

これで編集を更新したい場合、右下の変更を適用して閉じるボタンを押下することにより、テストで試した出力定義をそのままステートマシンの設定に反映することができます。

ボタンを押下してステートマシンのページに戻ると、

スクリーンショット 2024-12-31 14.02.50.png

反映できていることが確認できました。

おわりに

今回はStep Functions作成時に役立つコード補完やテスト実行についてまとめました。

慣れないJSONataの記法を使う場合にコード補完が効いてくれるととても助かりますし、候補を見ていると「あんなこともできそう?」とアイデアが膨らむきっかけにもなりますね。

ちょっとお試ししたいや、ワークフローの中で部分的にデバックを試したい場合にはテスト実行がとても便利です。ワークフローを作成・保存する手間や、別ステートの実行・結果を待つ手間が短縮できます。

ステートの数が増え、複雑かつ大きなワークフローになると単一ステートにフォーカスしたデバックを行うのが大変だったので、ありがたいですね。

Step Functions初学者にはまずこれらの便利機能を知っておくとその後のStep Functions Lifeが楽になりそうです。

それでは!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?