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とも仲良くしていけそうです!