Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWS 認定デベロッパーアソシエイト試験を勉強中です。
その中で StepFunctions について勉強をしたので、そのことを備忘録として書いていこうと思います。
StepFunctions とは
AWS のサービスのオーケストレーション、ビジネスプロセスの自動化、サーバーレスアプリケーションの構築に使用されるローコードの視覚的なワークフローサービス
※AWS公式 AWS Step Functions より
利点
迅速な構築とデプロイ
ドラック&ドロップでインターフェイスを開始
複雑なビジネスロジックも表現可能
少ない統合コードの書き込み
LambdaやECSなどのAWSリソースを弾力性のあるビジネスワークフロー、データパイプライン、アプリケーションに合成可能
耐障害性のステートフルなワークフローの構築
ワークフローの状態、チェックポイント、再起動の管理が可能
ワークフローが順番通りに実行されているかや、分岐、再試行、ロールバック機能をエラーや例外として自動的に対処
あらゆるユースケースに対応するデザイン
ユースケースに応じた2種類のワークフローを提供している。
・Standard ワークフロー
長時間稼働するワークロードの管理に使用されます。
・Express ワークフロー
大容量のイベント処理ワークロードをサポート
ユースケース
抽出、変換、ロード (ETL) プロセスを自動化
DynamoDBからデータをGetし、その後データを変換してからデータをPutすることが可能です。
機械学習 (ML) 用のデータの準備
ソースデータの収集、処理、正規化をするパイプラインの自動化を簡単に設定が可能
サーバーレスアプリケーションやマイクロサービスの運用管理の自動化
複数のLambda関数を組み合わせたアプリケーションやEC2インスタンスまたはコンテナを使用したオンプレミスサーバーで実行されるデータとサービスの自動化にも役立つ
ベストプラクティス
タイムアウトを設定しておく
Step Functions は、アクティビティワーカーからのレスポンスでしか、タスクが完了したことを知ることができない。
エラーが発生した場合、タイムアウト が指定されていないと、実行は返されることのないレスポンスを待ち続けるため、設定しておくと良い。
大きなデータを渡す際にはS3 ARNを使用
渡すデータが 262,144 バイトを超える場合、Amazon S3 を使用してデータを保存し、バケットの ARN をペイロードパラメーターを使用して、バケット名とキー値を取得、また実行時に小さいペイロードを渡すように実装を調整したほうが良い。
実行履歴はのハードリミット(上限)があるので、Lambdaでステートマシンなるものを作って回避
25,000エントリまでの上限があるので、Lambdaでステートマシンを作成することが推奨されている。
Lambdaで例外処理を書く
エラーが出た際に500エラーではなく、分岐を設けてあげる。エラーが起きた際の処理を明確にしておくことで、原因を明確にすることもできます。
使ってみた感想
StepFunction を使ってみた系の下記ブログを参考に使用してみました。
[やってみた]Step FunctionsのみでDynamo DBテーブルからアイテム取得/登録をしてみた
ワークフローの設計が楽
左側にあるアクション一覧からLambdaやSNSのタグをドラックするだけで簡単に設計ができます。
エラー箇所がわかりやすい
私が実際にやってみた際にエラーが出たものが下記の図です。
このようにエラーが出た箇所が一目でわかるようになっています。
またイベントの履歴も出るためどのような処理が行われているのか確認することもできます。
まとめ
簡単に触ってみて、データ取得や変換など決まった処理があった場合、StepFunctions に構成しておけば、とても楽になると思います。