これは何?
JP Contents Hubに掲載されているStep Functionsのハンズオンの実施メモです。
Step Functionsとは
AWS Step Functions はフルマネージドサービス型のサービスで、視覚的ワークフローを使用して分散アプリケーションやマイクロサービスのコンポーネントを容易にコーディネートできます。それぞれ別個の機能を実行する個々のコンポーネントからアプリケーションを構築することで、迅速にアプリケーションをスケーリングおよび変更できるようになります。Step Functions を使えば、安心してアプリケーションのコンポーネントを調整し、機能を配置できます。グラフィカルコンソールを使用して、アプリケーションのコンポーネントを一連のステップとして配置し、可視化できます。これにより、複数のステップからなるアプリケーションをシンプルに構築および実行できるようになります。Step Functions では、各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行されるため、アプリケーションが意図したとおりに整然と実行されます。また、各ステップの状態が記録されるため、問題が発生した場合は、問題を簡単に診断およびデバッグできます。コードを記述することなくステップを変更および追加できるため、アプリケーションを簡単に発展させ、短期間でイノベーションを実現できます。
https://aws.amazon.com/jp/step-functions/faqs/
端的にいうと、マイクロサービスなどの細分化した機能をGUIを使用して連結させ、サービスの設計ができるマネージドサービスです。AWS LambdaやAWS ECSなどを組み合わせることができます。
なぜStep Functionsを使うのか
- 短期間に簡単にアプリケーションを構築することができます。GUI上にLambdaをドラッグ&ドロップするだけでLambdaを実行できたり、実行順を変更するなどが可能です。
- 分散している機能をステートマシンにまとめることができ、管理が楽になります。
- エラー時の再実行、例外処理など機能として提供されており、簡単に組み込むことができます。
- サービスの実行順や実行状態をGUI上で可視化することができます。
ユースケース
ハンズオンのゴール
- ステートマシンを作成し、実行する方法を理解する
- ステートマシンでAWS Lambda関数を実行する方法を理解する
- ステートマシンのエラーハンドリングの設定について理解する
- ステートマシンのMap機能を理解する
- 他AWSサービスをトリガーとして、ステートマシンを実行する方法を理解する
アジェンダ
- [Hello World]の作成
- Lambdaを使わずStep Functionsで Hello Worldしてみる
- Lambdaの起動
- Step FunctionsからLambda関数を起動するステートマシンの作成
- Catchによるエラー処理
- Lambda関数(※)でエラーイベントを発生させ、ステートマシンでハンドリングしてみる
- (※)「step-functions-error」という設計図で公開
- Map機能にするLambda関数の複数回実行
- Map機能でLambdaを複数回実行し、実行結果を結合して出力する
ハンズオンの感想
ハンズオンでは単純なステートマシンしか作成しませんでしたが、
アプリケーションの規模が大きくなり、Lambdaやその他サービスなど関連するコンポーネントが多くなるほど、
このサービスの真価が発揮されると感じました。
ステートマシンのフローはJsonで管理できるため、IaCも可能なのも良いと思います。