blog top

Step Functions はいいぞ

これは 日本CTO協会24卒 Advent Calendar 2024 の6日目の記事です!

みなさんはStep Functionsを知っていますか?そして、どんなサービスかイメージがつくでしょうか。

自分は「たくさんのLambdaをつなげてくれるサービスでしょ?」くらいに思っていました。

公式ページの説明によると、

Step Functions は、デベロッパーが AWS のサービスを利用して分散型アプリケーションを構築し、プロセスを自動化するとともに、マイクロサービスをオーケストレーションして、データと機械学習 (ML) のパイプラインを作成できるようにするビジュアルワークフローサービスです。

なるほど、これだけ見ても嬉しさがあまりわからないので、実際に使ってみて良かったところを紹介します!

API が叩けるぞ

「APIを叩くならLambdaを使おう」と脳死で考えていませんか?私はそうでした。

Step Functionsには、なんとCall HTTPS APIsという部品が用意されています。

Call HTTPS APIs

設定はとても簡単で、最低限

を設定すればAPIを叩くことができます。もちろん、リクエストボディやヘッダー、クエリパラメータも設定できます。

Call HTTPS APIs の設定

今回は日時を返すだけのエンドポイント(https://clock.bigdragon.tech/)を使っています。

Step Functionsを実行してみると、ResponseBodyにAPIのレスポンスが入っていることがわかりますね!

APIのレスポンス

値の加工ができるぞ (JSONataはいいぞ)

先程のレスポンスは、年月日+時分秒が入っているのですが、それを年月日だけにしたいと思いました。

そこで登場するのが、Lambda…ではなく、JSONataです。

JSONataを使って値を加工し、年月日だけ取り出すコードは以下のように書けます。

(
  $response := $states.result.ResponseBody;
  $date := $substringBefore($response, " ");
  $date
)

APIのレスポンスは$states.result.ResponseBodyに入っています。

$substringBeforeはJSONataの組み込みの関数で、空白以前の年月日のみを取り出してくれています。

Step Functionsの画面では以下のように見えますが、\nなどが入っていて見づらいですね。

Step Functionsの画面から見たJSONata

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

JSONataのエディタ

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

加工したレスポンス

他にもたくさんのメソッドが用意されています。JSONata公式のドキュメントもあるのでぜひ使ってみてください。

まとめ

Step Functionsを実際に使ってみると、以下のポイントが便利でした。

これからはLambdaだけに頼らず、Step Functionsとも仲良くしていけそうです!