LoginSignup
4

More than 3 years have passed since last update.

AWS Step Functionsを使ってみた

Last updated at Posted at 2017-12-12

ワークフローシステムではTreasure Data社のDigdagを利用したことがあったのですが、Step Functionsの提案なんかもあったので、ちょっと使ってみました。使い道としてはLambdaは5分制限があるので、それを回避することも考えられますね。

やりたいこと

・Step Functionsを使う
・Lambdaを呼ぶ

前提

私のように初心者が初めて作るという方を前提としています。
Lambdaはある程度わかっていること。ちなみに私は実案件で使ったことないので、その程度で大丈夫です。

すごく単純なフロー

こちらを作成します。単純に1Lambdaを実行させるだけです。
image.png

1.LambdaのIAMロールを作成

Lambdaを作成するにはLambda用のロールを作成しとかないといけないので、まずは作成します。すでにロールがある場合は不要です。
IAMのサービスを開き、
image.png

ロールタブからロールの作成をクリック。
image.png

AWSサービスをクリックして、このロールを使用するサービスを選択で、Lambdaを選んで次のステップとします。
image.png

ポリシータイプは何も選択せずに次へのステップとします。
image.png

ロールの名前は適当に決めて、OKです。
image.png

2.Lambdaを作成

Lambda関数を作成します。
image.png

関数の作成をクリック
image.png

関数の名前はなんでもよいです。ランタイムはNode.js 6.10、ロールはデフォルトの既存のロールのままで、既存のロールに上で作成したロールを設定します。
image.png

Lambdaの画面ですが、トリガーは何も設定しません。
image.png

下の方のコードを以下のように書き換えます。
image.png

3.Step Functionsの作成

Step Functionsのステートマシンを作成します。ステートマシンとはまぁ簡単にいうとワークフローです。ワークフローを作成しますといっても同じです。JSONベースで出来ています。

検索からサービスを選択します。
image.png

ステートマシンを初めて作る場合はこのような画面が表示されるので、「今すぐ始める」ボタンを選択します。
image.png

ステートマシンの名前を付けます。ワークフローの名前ですね。とりあえず「HelloWorldStateMachine」と付けました。
image.png

設計図では「Hello World」を選択します。
image.png

コードは以下のように設定します。
・Type→Taskに変更
・Result→Resourceに変更
・値を先ほどlambdaで作ったarnに変更
image.png
arnはResultをResourceに変更して、値のところをクリックすると候補がいくつか出てくるので、関数名で判断できます。
image.png

ビジュアルワークフローは以下のようになります。
今回は関数を呼び出しているだけのシンプルなワークフローです。
AWS Glueでも思ったのですが、ビジュアルワークフローからコードが生成されるとかなり使いやすいんですけどね。
image.png

すべて完了したら「ステートマシンの作成」ボタンを選択します。
実行ロールが自動作成されるため、デフォルトでOKを押します。
image.png

4.実行

新しい実行を選択します。
image.png
入力を修正して実行!
image.png
実行の詳細で出力タブを確認すると、Lambdaで設定したcallbackが返ってきていることがわかります。
image.png

まとめ

今回は単純なフローを作成しましたが、次は分岐があるフローやもう少し意味のあるLambdaで試してみたいです。
参考:
チュートリアル:Lambda ステートマシンを作成する
AWS Step Functionsチュートリアル実践:Lambdaステートマシンの作成と実行 #reinvent

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4