AWS Step Functions: はじめてのAWS Step Functions – ステートマシンの実行 #reinvent

eyecatch_step_functions

AWS re:Invent 2016 Keynoteで発表された、ビジュアライズなワークフローを使用して、分散アプリケーションと Microservicesのコンポーネントを簡単にコーディネート出来るサービス『Step Functions』。このサービスは既にGA(Generally Available:一般利用可能)となっており、ドキュメント等も公開されています。早速『Getting Started』の内容について、どんな感じなのか試してみたいと思います。

目次

AWS Step Functionsとは

AWS Step Functionsとは、ビジュアルワークフローを使用して分散アプリケーション及びマイクロサービスのコンポーネントを調整する事を可能とするWebサービスです。個別の機能またはタスクを実行する個々のコンポーネントからアプリケーションを構築し、アプリケーションの拡張と変更を迅速に行う事が出来ます。

Step Funcsionsではコンポーネントを調整してアプリケーションの機能をステップ実行する手段と、一連の手順としてアプリケーションのコンポーネントを視覚化する為のグラフィカルなコンソールを提供します。

自動的に各ステップをトリガーして追跡し、エラーが発生した時には再試行する為、アプリケーションは毎回正常に実行されます。Step Functionsは各ステップの状態を記録するので、問題発生時にはその問題を迅速に判断してデバッグする事が出来ます。

Step Functionは、アプリケーションがあらゆる規模で利用可能である事を保証する為に、操作及び基盤となるインフラストラクチャを管理します。

Step FunctionsはAWSクラウド、独自のサーバー、またはAWSにアクセス可能なシステム上でタスク実行を行う事が可能です。Step Functionsはコンソール/AWS SDK/またはHTTP APIを介して使用する事が出来ます。

Step Functionsの機能

AWS Step Functionsの主な機能は以下の通りです。

  • 『タスク(task)』と『ステートマシン(state machines)』の概念に基づく。
  • JSONベースの言語を使用してステートマシンを定義。
  • ステートマシンの構造をグラフィカルに表現(コンソールにて)。
  • ステートマシンのロジックを視覚的にチェックし、実行を監視する手段を提供。

 

AWS Step Funcitons入門

このチュートリアルでは、Pass Stateを使用して単独で実行出来る単純なステートマシンを作成します。Pass Stateはもっともシンプルな状態であり、"no-op"を表します。AWSアカウントを用意し、管理コンソールにアクセス出来る状態にしておいてください。

 

1.ステートマシンの作成

1-1.管理コンソールにサインインし、Step Functionsメニューへ遷移。

getting-started-step-functions_01

1-2.Get Started押下。

getting-started-step-functions_02

1-3.Create State Machineの画面が表示されます。ステートマシンの名称を入力。(注:この名前はアカウント及びリージョンに於いて一意の名称となっている必要があります)

そしてHello Worldのアイコンをクリック。Step Functionsでは、テンプレートのサンプルを使ってステートマシンを作成する事が出来ます。

getting-started-step-functions_03

1-4.テンプレートを用いたステートマシンのサンプルが表示されました。コードペインにはステートマシンのAmazon States Languageの説明が表示されています。このステートマシンのBlueprintは、『HelloWorld』という単一のタスクステートで構成されています。このチュートリアルではタスク実行は行わず、シンプルにPass状態を結果に注入してみましょう。

getting-started-step-functions_04

1-5.ここでは、試しに状態のTypeフィールドの値をTaskからPassに変更し、ResourceフィールドをResultフィールドに変更、そしてその値を任意の文字列にしてみました。

getting-started-step-functions_05


getting-started-step-functions_06

1-6.『Preview』ペインに以下ステートマシン構造のグラフが表示されている事を確認します。表示されない場合は[Update]をクリックしてください。このグラフはAmazon States言語コードがステートマシンを正しく記述している事を確認するのに便利です。確認が出来たら[Create State Machine]を押下。

getting-started-step-functions_07

1-7.ステートマシン実行のダイアログが表示され、タスクに対するIAM Roleの選択が求められます。 ここではStep Functionsによって自動的に生成された役割(StatesExecutionRole-REGION)を選択し、[OK]を押下して作成を行います。

getting-started-step-functions_08

注意: 自動生成されたIAM Roleを削除してしまうと、Step Functionsではそれを再作成出来ませんので気をつけてください。また同様にIAM PolicyのプリンシパルからStep Functionsを削除する等してロールを変更した場合についても元に戻せなくなります。
手作業によるIAM Role作成の方法については以下をご参照ください。

 

2.ステートマシンの実行

2-1.程なくしてステートマシンの作成が完了し、下記画面に遷移します。ここでは[New Execution]ボタンを押下する事で新しくタスクを作成する事が出来ます。先程作成したステートマシンを実行するには左ペインの『Dashboard』を選択。

getting-started-step-functions_09

2-2.ステートマシンの一覧の中に先程作成したブツが表示されています。

getting-started-step-functions_10v

2-3.ステートマシンはクリックする事で詳細画面へと進めます。[New execuion]を選択。

getting-started-step-functions_11

2-4.すると新しくウインドウが開きます。実行を識別する為にオプションでIDを入力する事が出来ます。入力しなかった場合はサービス側で一意のIDが生成されます。IDを設定するには、[Enter your execution id here]のテキストボックスに任意のIDを入力します。(ここではそのまま空にしてみます)

getting-started-step-functions_12

2-5.実行入力エリアの下にある[Start Execution]を押下。ステートマシンの実行が開始され、実行された事を示す新しいページが表示されます。[Execution Details]セクションにて[Info]タブを選択、実行ステータスと実行の開始/終了を確認。

getting-started-step-functions_13

2-6.[Output]タブをクリックすると実行結果が表示されます。無事処理の実行が完了しました!

getting-started-step-functions_14

 

まとめ

という訳でAWS Step Functions実践入門、一番シンプルな形でのサンプル実行を試してみたエントリでした。条件分岐も何も無いので特に難しい事無く進める事が出来ましたが、UIや設定方法等もそこまで煩雑では無さそうですし、またコードがグラフで表示されるというのも分かり易くて良いなと思いました。チュートリアルについては幾つか用意されている様ですので、引き続きStep Functionsについては実践・検証を進めて理解を深めて行きたいと思います。こちらからは以上です。