この記事の目次
「AWS Step Functions」とは?
「AWS Step Functions」とは、アプリケーションの一つひとつの処理を「ステップ」として定義することで、処理の流れ(ワークフロー)を可視化して操作できるサービスです。
それでは、サービスの概要を確認していきます。
「AWS Step Functions」の概要
「AWS Step Functions」は、ワークフローを「フローチャート」に似た図で分かりやすく可視化することが可能です。
可視化されたワークフローを元にして、アプリケーションが設計の意図通りに動作していることを視覚的に確認できます。
また各ステップから「AWS Lambda」等のサーバーレスサービスを呼び出せるので、ワークフローを変更することでアプリケーションの修正が簡単に済むようになります。
「AWS Step Functions」のメリット
サーバーレスアプリケーションの管理は、その数が増加していくことで、処理順序の整理や障害発生時の再試行等にて複雑化するという問題があります。
「AWS Step Functions」には、こういった問題点を解消するための「生産性」、「俊敏性」や「耐障害性」といったメリットがあります。
それぞれのメリットについて詳しく解説していきます。
「AWS Step Functions」のメリット:生産性
「AWS Step Functions」の最初のメリットは、アプリケーションの迅速な構築を可能とする「生産性」です。
サーバーレスのアプリケーションを短時間で構築することが可能です。また構築したアプリケーションが想定通りに動作するかについて、可視化されたワークフローで簡単に確認できます。
「AWS Step Functions」のメリット:俊敏性
次のメリットは、アプリケーションの迅速な変更を可能とする「俊敏性」です。
具体的には、アプリケーションの一部を修正するだけで、ワークフロー全体を変更したり、各ステップでの処理内容を改修したりすることが可能です。
「AWS Step Functions」のメリット:障害耐性
「AWS Step Functions」のその他のメリットとしては、安定してスケールアウトする点と障害発生からの回復を可能とする「障害耐性」です。
ステップ数が大規模(数百万単位)であっても同時実行が可能で、負荷の増加に対応して自動的にスケールアウトしてくれます。また各ステップの処理結果をチェックして、再実施やエラー処理を支援してくれます。
「AWS Step Functions」の特徴
「AWS Step Functions」は、サーバーレスを活用したアプリケーションの構築や運用を自動化するというのが主な特徴です。
ちなみに、このシステムの構築や運用を自動化する技術を「オーケストレーション」と呼びます。つまりサーバーレスなオーケストレーションが「AWS Step Functions」の特徴といえます。
それでは、こういった特徴に関する詳細について解説していきます。
ワークフローのステップ管理
「AWS Step Functions」は、アプリケーション実行中にワークフローのどのステップに現在位置しているかを管理しています。また管理するだけではなくアプリケーションの状態もイベントログとして保存しています。
そのため、システム障害が発生した際でも、その前に保存した状態に戻すことで復旧が可能となります。
ワークフローの部分的な変更
アプリケーション実装でワークフローを形成していく一般的な方法とは異なり、ワークフローのみをダイレクトに定義や管理することが可能です。
通常のアプリケーションの場合は、改修が部分的であっても全体をバージョンアップする必要があり、影響がアプリケーション全体に及びます。
「AWS Step Functions」の場合は、ワークフローの一部のみを簡単に修正可能で、その影響も局所的に抑えられます。
ワークフローの「状態遷移図(ステートマシン)」による表現
「AWS Step Functions」は、ワークフローを「状態遷移図(ステートマシン)」として表現していきます。
このステートマシンによって、アプリケーションの状態を単純な「ステートメント(状態)」と「ダイアグラム(図形表示)」に変換しながら定義します。
文字列の集合体であるプログラムでは判別しづらかった機能の実装有無について、簡単に理解できるようになります。
様々なAWSサービスとの接続
「AWS Step Functions」のワークフローは、他のAWSサービスと接続する際に「サービスタスク」を使用します。
例えば、「AWS Lambda」関数の呼び出し、「AWS Fargate」のタスク実行や「AWS Batch」のジョブ管理等のAWSサービスと接続できます。
ビジネスロジックの分離
「AWS Step Functions」は、ビジネスロジックをアプリケーションから簡単に切り離して管理できます。
通常であればアプリケーションの中で実装するビジネスロジックについて、例えば処理の順序を変更する際には、ワークフローのステップの順番変更で済み、アプリケーション改修によるビジネスロジック変更が不要となります。
このようにコードがモジュール化されるので、メンテナンス性やコード再利用性が向上します。
アプリケーションの実行時のステート管理
「AWS Step Functions」は、アプリケーション実行時の「状態(ステート)」を保存します。
具体的には、現在アプリケーションがどのステップにあるかの位置情報やワークフローのステップ間でやり取りするデータを保存しています。
つまりユーザーは、複雑なステート管理やアプリケーション実行時のデータの格納についての管理が不要となります。
「AWS Step Functions」の「ステートマシン」作成方法
ここまで「AWS Step Functions」の特徴について解説してきました。
ここからは「ステートマシン」の作成方法について、「ASL (Amazon States Language) 」と呼ばれる JSON形式のワークフローを定義する言語を用いた具体例を交えて説明していきます。
ステートマシンの作成
ステートマシンの作成には、AWSの独自言語であるJSON形式の「ASL (Amazon States Language) 」でワークフローを定義します。
アプリケーションのライフサイクルに沿っていくと、最初にJSON形式のASLでステートマシンを定義し、それをダイアグラムで視覚化して、ステートマシンの実行をモニタリングする、という流れです。
ステートマシンの具体的な記述例
ステートマシンの具体的な記述例について、以下に記載します。
{
"Comment":"HelloAWSWorld Example",
"StartAt":"HelloAWSWorld",
"States": {
"HelloAWSWorld":{
"Type":"Task",
"Resource":"arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
"End":true
}
}
}
ASLのチェックツール
ASLの構文誤りを防止するために、Rubyベースの「ASL記述チェックツール」がAWS社から公開されています。こちらを利用して構文のチェックを行います。
ASLチェックツールは、以下のコマンドでインストールします。
$ gem install statelint
ASLチェックツールの利用方法
それでは、以下のコマンドで構文チェックを実行します。
$ statelint
もし不正であれば、以下のようなエラーが表示されます。
2 errors: StartAt value Parallel not found in States field at State Machine No transition found to state State Machine.parallel
こういったツールを活用して、「AWS Step Functions」で生産性向上を図っていきましょう
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞