Step Functions はいいぞ
これは 日本CTO協会24卒 Advent Calendar 2024 の6日目の記事です!
みなさんはStep Functionsを知っていますか?そして、どんなサービスかイメージがつくでしょうか。
自分は「たくさんのLambdaをつなげてくれるサービスでしょ?」くらいに思っていました。
公式ページの説明によると、
Step Functions は、デベロッパーが AWS のサービスを利用して分散型アプリケーションを構築し、プロセスを自動化するとともに、マイクロサービスをオーケストレーションして、データと機械学習 (ML) のパイプラインを作成できるようにするビジュアルワークフローサービスです。
なるほど、これだけ見ても嬉しさがあまりわからないので、実際に使ってみて良かったところを紹介します!
API が叩けるぞ
「APIを叩くならLambdaを使おう」と脳死で考えていませんか?私はそうでした。
Step Functionsには、なんとCall HTTPS APIsという部品が用意されています。

設定はとても簡単で、最低限
- API エンドポイント
- メソッド
- 接続
- パブリックなAPIか、プライベートなAPIか
- 認証に使うパスワードやAPIキー
を設定すればAPIを叩くことができます。もちろん、リクエストボディやヘッダー、クエリパラメータも設定できます。

今回は日時を返すだけのエンドポイント(https://clock.bigdragon.tech/)を使っています。
Step Functionsを実行してみると、ResponseBodyにAPIのレスポンスが入っていることがわかりますね!

値の加工ができるぞ (JSONataはいいぞ)
先程のレスポンスは、年月日+時分秒が入っているのですが、それを年月日だけにしたいと思いました。
そこで登場するのが、Lambda…ではなく、JSONataです。
JSONataを使って値を加工し、年月日だけ取り出すコードは以下のように書けます。
(
$response := $states.result.ResponseBody;
$date := $substringBefore($response, " ");
$date
)
APIのレスポンスは$states.result.ResponseBodyに入っています。
$substringBeforeはJSONataの組み込みの関数で、空白以前の年月日のみを取り出してくれています。
Step Functionsの画面では以下のように見えますが、\nなどが入っていて見づらいですね。

そこで、鉛筆のアイコンをクリックすると、JSONataのコードをきれいなエディタで編集できます。

最終的に、Step Functionsの実行結果は以下のようになりました。正しく年月日だけが取り出されていますね!

他にもたくさんのメソッドが用意されています。JSONata公式のドキュメントもあるのでぜひ使ってみてください。
まとめ
Step Functionsを実際に使ってみると、以下のポイントが便利でした。
- Call HTTPS APIsでAPIを呼び出せる
- JSONataで値を加工できる
これからはLambdaだけに頼らず、Step Functionsとも仲良くしていけそうです!