ワークフローシステムではTreasure Data社のDigdagを利用したことがあったのですが、Step Functionsの提案なんかもあったので、ちょっと使ってみました。使い道としてはLambdaは5分制限があるので、それを回避することも考えられますね。
やりたいこと
・Step Functionsを使う
・Lambdaを呼ぶ
前提
私のように初心者が初めて作るという方を前提としています。
Lambdaはある程度わかっていること。ちなみに私は実案件で使ったことないので、その程度で大丈夫です。
すごく単純なフロー
こちらを作成します。単純に1Lambdaを実行させるだけです。
1.LambdaのIAMロールを作成
Lambdaを作成するにはLambda用のロールを作成しとかないといけないので、まずは作成します。すでにロールがある場合は不要です。
IAMのサービスを開き、
AWSサービスをクリックして、このロールを使用するサービスを選択で、Lambdaを選んで次のステップとします。
2.Lambdaを作成
関数の名前はなんでもよいです。ランタイムはNode.js 6.10、ロールはデフォルトの既存のロールのままで、既存のロールに上で作成したロールを設定します。
3.Step Functionsの作成
Step Functionsのステートマシンを作成します。ステートマシンとはまぁ簡単にいうとワークフローです。ワークフローを作成しますといっても同じです。JSONベースで出来ています。
ステートマシンを初めて作る場合はこのような画面が表示されるので、「今すぐ始める」ボタンを選択します。
ステートマシンの名前を付けます。ワークフローの名前ですね。とりあえず「HelloWorldStateMachine」と付けました。
コードは以下のように設定します。
・Type→Taskに変更
・Result→Resourceに変更
・値を先ほどlambdaで作ったarnに変更
arnはResultをResourceに変更して、値のところをクリックすると候補がいくつか出てくるので、関数名で判断できます。
ビジュアルワークフローは以下のようになります。
今回は関数を呼び出しているだけのシンプルなワークフローです。
AWS Glueでも思ったのですが、ビジュアルワークフローからコードが生成されるとかなり使いやすいんですけどね。
すべて完了したら「ステートマシンの作成」ボタンを選択します。
実行ロールが自動作成されるため、デフォルトでOKを押します。
4.実行
新しい実行を選択します。
入力を修正して実行!
実行の詳細で出力タブを確認すると、Lambdaで設定したcallbackが返ってきていることがわかります。
まとめ
今回は単純なフローを作成しましたが、次は分岐があるフローやもう少し意味のあるLambdaで試してみたいです。
参考:
チュートリアル:Lambda ステートマシンを作成する
AWS Step Functionsチュートリアル実践:Lambdaステートマシンの作成と実行 #reinvent