COLUMN
AWS Step Functionsとは?ユースケースや使い方をわかりやすく解説
AWSなどクラウドに関するお役立ち情報やイベント情報などをNTT東日本のクラソルメールマガジンにて毎週配信しております。ぜひご登録いただき、今後のクラウド活用の参考にしていただければと思います。
AWS Step Functionsとは、複数のAWSサービスを統合してアプリケーションを視覚的に構築できるサーバーレスのオーケストレートシステムです。
AWS Step Functionsを活用すれば、ワークフローの可視化や分散システム管理も簡単に行えます。
アプリケーションの構築に利用するべきか検討しているものの、使い方やメリットが分からず導入を迷われる方もいるでしょう。
そこで本記事ではAWS Step Functionsの概要やユースケース・使い方を分かりやすく解説します。Amazon Simple Workflow Service(SWF)との違いも解説しているので、ぜひ参考にしてください。
目次:
- 1.AWS Step Functionsとは?
- 1-1.Amazon Simple Workflow Service(SWF)との違い
- 2.AWS Step Functionsの特徴と利用メリット
- 2-1.ワークフローの可視化
- 2-2.分散システム管理
- 2-3.エラー処理
- 2-4.非同期タスクの実行
- 2-5.ワークフローのモニタリングとログ
- 2-6.AWSサービスとの統合
- 3.AWS Step Functionsのユースケース
- 3-1.データ処理
- 3-2.機械学習
- 3-3.マイクロサービスの自動化
- 3-4.ITおよび情報セキュリティの自動化
- 4.AWS Step Functionsの使い方
- 4-1.AWS Lambdaを使用したステートマシンとサーバーレスワークフローの作成
- 4-2.Amazon EventBridgeで定義したスケジュールに基づいたステートマシンの定期実行
- 5.AWS Step Functionsの料金体系
- 6.AWSの導入ならぜひNTT東日本にご相談ください
- AWS Step Functionsについてまとめ
1.AWS Step Functionsとは?
AWS Step Functionsとは、AWS Lambdaなど複数のAWSサービスに絡みあうプロセスをオーケストレートできるシステムのことです。
AWS Step Functionsではステートマシンと呼ばれる仕組みを採用しており、AWSを活用する上でのプロセスの流れや関数を記述ができます。ステートマシンを利用することで、複数あるAWSサービスのワークフローを連携し同時に実行することが可能です。
また全体のプロセスの流れを可視化できるワークフローという仕組みがあり、実行履歴などのログ管理もできます。
ひとつのアプリケーションを動作させるためには、複数のAWSサービスを利用し複雑なプロセスが絡み合っています。このプロセス管理をAWS Step Functionsが担ってくれるのです。
1-1.Amazon Simple Workflow Service(SWF)との違い
AWS Step Functionsと似たサービスとして、Amazon Simple Workflow Service(SWF)があります。
AWS Step Functionsでは視覚的ワークフローを使用するのに対し、Amazon Simple Workflow Service(SWF)ではDeciderと呼ばれるプログラムを記述し細かな制御をしていく点が異なります。
Amazon Simple Workflow Service(SWF)はプログラミングベースのため、実装が複雑化しやすいといった特徴があります。
そのため新規のアプリケーション開発をするのであれば、AWS Step Functionsを活用した方がよいでしょう。一方、AWS Step Functionsではできない複雑な制御になった場合に、Amazon Simple Workflow Service(SWF)の利用がおすすめです。
AWS Step FunctionsやAmazon Simple Workflow Service(SWF)などのワークフローシステムについて詳しく知りたい方は、以下の記事を参考にしてください。
関連記事:ワークフローシステムとは?5つの機能から使いこなすコツまで
AWSなどクラウドに関するお役立ち情報やイベント情報などをNTT東日本のクラソルメールマガジンにて毎週配信しております。ぜひご登録いただき、今後のクラウド活用の参考にしていただければと思います。
2.AWS Step Functionsの特徴と利用メリット
ここではAWS Step Functionsの特徴とメリットを紹介します。AWS Step Functionsを活用すれば、分散アプリケーションの構築が容易となり、大規模なシステムやアプリケーションの構築が可能です。メリットを含めて、参考にしてください。
2-1.ワークフローの可視化
AWS Step Functionsでは、ワークフローの可視化が可能です。AWSでアプリケーションを開発する場合、ワークフローが複雑になる場合がほとんどです。
AWS Step Functionsを活用すれば、複雑なコードを使用せずダイアグラムで設計ができます。そのためワークフローを視覚的に設計できるため、構築がよりシンプルなうえ、各ステップとその関係をグラフィカルに表示が可能です。
開発者やエンジニアは、アプリケーションのビジネスプロセスを理解しやすくなり、管理も楽になるでしょう。
2-2.分散システム管理
AWS Step Functionsでは、分散アプリケーションのコンポーネントをまとめて管理できます。そのため、異なるAWSサービスを複数使っていたとしても、AWS Step Functionsにて配置し処理をすれば容易に調整が可能です。
エンドトゥーエンドワークフローにて、全てのジョブを管理できるので、複数のシステムを利用していたとしても一元管理ができ便利です。
2-3.エラー処理
AWS Step Functionsでは、ワークフロー内でエラーが発生したとしてもエラー処理が可能です。
特定のエラーがでるのであれば、先にステート遷移をカスタマイズしておくことができます。エラーハンドリングだけでなく、リトライ設定も可能です。
たとえばエラー名に合わせたリトライ待ち時間やリトライ回数なども、細かく設定ができます。
そのため、万が一エラーがでたとしても、ほかのワークフローに問題などを生じさせることもなくエラーハンドリングやリトライで解決できます。
2-4.非同期タスクの実行
AWS Step Functionsは、非同期タスクの実行やバッチ処理も行えます。
バッチ処理を活用すれば、大量のデータを決まった時間に処理をすることも可能です。さらに処理した時間や実行結果の確認も簡単にできるので、安心して運用が可能な点もメリットと言えるでしょう。
煩雑しやすい処理や大量のデータ処理などを、AWS Step Functionsでは効率的に実行できます。
2-5.ワークフローのモニタリングとログ
AWS Step FunctionsではAmazon EventBridgeと統合し、ワークフローのモニタリングとログ収集が可能です。
実行中のアプリケーションが、現在どのような操作を行っているかリアルタイムで追跡ができます。ステートマシンの実行結果は、成功・失敗・進行中・キャンセルなどで色分けされて表示されるので可視化されすぐに判断できます。
さらにいつどの処理を行ったのか、ログも細かく表示することが可能なため安心して運用ができるでしょう。
そのほかAmazon EventBridgeを活用すればステート表示が変わったときに、通知をすることもできます。
2-6.AWSサービスとの統合
AWS Step Functionsでは、220以上のAWSサービスを呼び出し統合が可能です。
利用用途に合わせてサービスを統合すれば、機械学習やデータ処理・分析などをより簡単に構築・運用できます。
また、9,000以上のAPIアクションにアクセスができ、AWS Step Functionsで機能できるよう自動でカスタマイズされます。そのため、AWS Step Functionsで適切なアクションの実行が可能です。
3.AWS Step Functionsのユースケース
AWS Step Functionsを利用すれば、さまざまなサービスと連携して構築が可能です。本章ではAWS Step Functionsを活用して構築できるユースケースを4つ紹介します。
3-1.データ処理
AWS Step Functionsでは、大規模なデータ処理を得意とします。AWS Step Functionsの中にはMapといわれる並列処理がありましたが、現在Distributed Mapが提供され大規模なデータ処理も可能となりました。
10,000並列まで子ワークフローが生成できるようになり、Amazon S3からの読み込みや書き込みができます。
データ処理に応じて、Amazon EMRやAWS Lambda・AWS Batchなどさまざまなサービスと統合が可能です。最適なサービスと統合し構成していけば、動画処理やファイル処理・バッチ処理などに活用できます。
3-2.機械学習
AWS Step FunctionsとAmazon SageMakerなどを利用すれば、機械学習も可能です。AWS Step Functionsでは、データサイエンスソフトウェア開発キットが提供されており、モデルをトレーニングしてからワークフローの公開ができます。
高速で大規模なデータを取り扱えるAWS Step Functionsを活用すれば、情報収集・前処理・加工・学習・後処理などを、機械学習ワークフローの自動化が可能です。
機械学習について詳しく知りたい方は、以下の記事も参考にしてください。
関連記事:【機械学習入門】機械学習がAIを支える!学習の種類やワークロードから関連用語までをわかりやすく解説
3-3.マイクロサービスの自動化
ユースケースとして、マイクロサービスの自動化も挙げられます。
視覚的ワークフローを利用すれば、マイクロサービスのコンポーネントを容易に調整できるからです。AWS Step Functionsでは、マイクロサービスを管理できるワークフローを2つ提供しています。
長期的な管理であれば、AWS Fargateを統合した標準ワークフローが便利です。一方、大量なデータやすぐに対応しなければならない場合は、同期Expressワークフローを使用します。
AWS Step Functionsを利用すれば、マイクロサービスのオーケストレーションが可能なうえ、柔軟で細かな変更も容易になるでしょう。
3-4.ITおよび情報セキュリティの自動化
情報セキュリティの管理は、複雑かつ煩雑になりやすい作業のひとつと言えます。本来の業務を効率的に行うためにも、情報セキュリティの自動化は大切です。
AWS Step Functionsを活用すれば、インシデント対応が可能な情報セキュリティ自動化が可能です。マニュアルの介入は必要なく、自社のニーズに合わせてスケールできます。
さらに手動で行うべき場合は、先に定義を決めておけばワークフローの停止も可能です。そのため自動化しても、安心して運用ができるでしょう。情報セキュリティだけでなく、ITの自動化も可能なため、自社に合わせたワークフローの設定を行えば、事業の効率化を図れます。
4.AWS Step Functionsの使い方
本章ではAWS Step Functionsの主な使い方を、簡単に解説します。
- AWS Lambdaを使用したステートマシンとサーバーレスワークフローの作成
- Amazon EventBridgeで定義したスケジュールに基づいたステートマシンの定期実行
今回は上記2つを紹介するので、ぜひ参考にしてください。
4-1.AWS Lambdaを使用したステートマシンとサーバーレスワークフローの作成
本章では、AWS Lambdaを使用したステートマシンとサーバーレスワークフローの作成の流れを解説します。
AWS Lambdaについて理解を深めたい方は、以下の記事をご覧ください。
関連記事:サーバーレスでプログラムを実行できる「AWS Lambda」とは
4-1-1.Lambda関数を作成する
始めに、Lambda関数を作成しましょう。
Lambdaコンソールを開いたら「関数の作成」をクリックします。「最初から作成」を押した後、HelloFunctionと関数名に入力します。
続いてコードソースを以下の内容に書き換えて「Deply」ボタンを押下します。
import json
def lambda_handler(event, context):
return {
'who': json.dumps(event['who'])
}
4-1-2.Lambda関数をテストする
Lambda関数を作成したら、テストして動作できるか確認をしましょう。「テスト」を選択後、イベント名に「HelloEvent」と入力します。
続いて、イベントJSONデータは、下記を参考に書き換えましょう。
{
"who": "AWS Step Functions"
}
保存後、テストをクリックし実行結果で動作できているか確認すれば完了です。
4-1-3.ステートマシンを作成する
動作に問題がなければ、ステートマシンを作成します。
Step Functionsコンソールを開いたら「ステートマシンの作成」をクリックします。この際テンプレートは、空白を選択しましょう。アクションタブの画面を選択したまま、AWS Lambda InvokeにAWS Lambda Invoke APIをドラッグアンドドロップします。
続いて作成した関数を設定しましょう。APIパラメータにて作成した関数を選択し、Payloadはそのままにします。定義を選択後、パラメータに名前は指定しますが、設定はデフォルトのままで問題ありません。
作成をクリックし、ロール作成の確認を行えばステートマシンの完成です。
4-1-4.ステートマシンを実行する
ステートマシンを作成したら、実行してみましょう。ステートマシンのページで、ステートマシン名を入力し実行を押します。
入力画面には、関数テストで利用した下記の内容をそのまま入力します。
{
"who": "AWS Step Functions"
}
実行開始を押せば、ステートマシンは実行されます。以下に実行結果(成功時)と出力結果を示します。
4-2.Amazon EventBridgeで定義したスケジュールに基づいたステートマシンの定期実行
Amazon EventBridgeで定義したスケジュールに基づいてステートマシンを定期実行する方法を解説します。
Amazon EventBridgeとは、イベントのやり取りをアプリケーションに接続できるサーバーレスのサービスです。Amazon EventBridgeで定義したスケジュールでステートマシンを定期実行すれば、定期的な作業を効率的に行えます。
Amazon EventBridgeの詳しい内容を知りたい方は、以下の記事も参考にしてください。
関連記事:【初心者向け】Amazon EventBridgeとは?基本を解説
4-2-1.ステートマシンを作成する
始めに、ステートマシンを作成します。
ステートマシンの作成は、「デザイン」タブで視覚的に作成するか「{} Code」タブでコード作成するか選択できますが、今回は「{} Code」タブを選択し、コード作成で行います。
ワークフローのコードは、以下を参考にしてください。
またコードの詳細な仕様については「Amazon ステートメントの言語」を参照してください
上記内容からarnの部分を今回作成したLambdaのarnに書き換えます。その他コメント等を適宜変更します。
次に「設定」タブを選択します。
ステートマシンの名前を入力、タイプは「標準」を選択し「作成」ボタンを押下すればステートマシンの作成は完了です。
4-2-2.EventBridge ルールを作成する
続いて、EventBridgeルールを作成します。作成したステートマシンの「アクション」を押下し表示されたプルダウンメニューから「EventBridgeルールを作成」を選択します。
ルール名を作成し「選択したイベントバスでルールを有効にする」を選択後、スケジュールをクリックします。
スケジュール名に「HelloEvent_Schedule」と入力し、ルールタイプは「スケジュール」を選択し、「EventBridge Schedulerで続行」ボタンを押下します。
スケジュールのパターンの入力画面が表示されます。
スケジュール方法は、特定の時刻を設定したり5分や10分ごとに定期実行したりも可能です。
今回はテストなので「1回限りのスケジュール」を選択し、実行日時とフレックスタイムウィンドウを設定し、「次へ」ボタンを押下します。
ターゲットの選択画面では「すべてのAPI」を選択し、検索キーワードに「step functions」と入力し、表示された候補から「AWS Step Functions」を選択します。
表示された「AWS Step Functions」の候補から「StartExecution」を選択します。
ステートマシンのプルダウンメニューから今回作成したStep Function名を選択します。
入力欄には以下を設定し「次へ」ボタンを押下します。
{
"who": "AWS Step Functions"
}
アクセス許可では「このスケジュールの新しいロールを作成」を選択し「次へ」ボタンを押下します。
最後に設定内容の確認画面が表示されるので、誤りが無いことを確認したら「スケジュールを作成」ボタンを押下します。数分間でスケジュールが作成されます。
行いたい定期実行を記載のうえ、ターゲットの設定をします。
4-2-3.ステートマシンを実行する
ステートマシンを作成しルールを設定すれば、あとは実行して問題ありません。実行後はStep Functionコンソールから、実行結果を確認できます。
定期実行をクリックすると、各詳細の確認も可能です。
AWSなどクラウドに関するお役立ち情報やイベント情報などをNTT東日本のクラソルメールマガジンにて毎週配信しております。ぜひご登録いただき、今後のクラウド活用の参考にしていただければと思います。
5.AWS Step Functionsの料金体系
AWS Step Functionsは、使用した分のみ支払う従量課金です。AWS Step Functionsでは、StandardワークフローとExpressワークフローで費用が異なります。またリージョンごとにも費用が異なりますが、以下東京リージョンの価格を参考にしてください。
標準ワークフロー | 0.025USD/状態遷移1,000回ごと |
---|---|
Expressワークロード | 0.000001USD/1リクエスト |
無料枠:状態遷移 | 4000回/毎月 |
※2023年12月時点の料金です。
そのほかデータ転送やLambda関数の呼び出しには、別途費用が追加されます。詳しくは公式ページでご確認ください。
出典:AWS「AWS Step Functionsの料金」
6.AWSの導入ならぜひNTT東日本にご相談ください
AWS Step Functionsを活用し、AWSの導入を検討していても知見がなかったりエンジニア不足により導入を迷われていたりする方もいるでしょう。
そのようなお悩みをお持ちの場合は、ぜひNTT東日本にお問い合わせください。
NTT東日本ではAWSの有資格者であるエンジニアが、親身にご相談に応じます。
必要な場合は、問題を解決するための設計・構築・運用・保守までワンストップで対応も可能です。
ご興味のある方は、ぜひ下記のページよりお気軽にお問い合わせください。
AWS Step Functionsについてまとめ
AWS Step Functionsは、視覚的ワークフローを活用しプロセスをオーケストレートできるサービスです。複数のサービスを一元管理でき、分散システム管理・モニタリング・エラー処理などが容易に行えます。
複数のサービスを活用する機械学習やデータ処理など、さまざまな分野で活用できるので、これからアプリケーションの開発を検討されている方におすすめのサービスでしょう。
AWS Step Functionsに興味があるけれど、AWSでどのように導入するべきか悩まれている方は、ぜひNTT東日本にお問い合わせください。
RECOMMEND
その他のコラム
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。