日々充実

毎日が充実したと思えるようになるためのブログ

【Report】雲勉 in 名古屋 vol.3

こんばんわー!ヒサユキです。
少し遅くなりましたが、一昨日の雲勉のレポートを書いていきます!

kumoben.doorkeeper.jp

今回の内容

2016年のre.Inventで紹介された新サービス、”Step Function”についてのお話でした。
Step Functionとはなにか?どう楽になったかという感じの内容でした!
ただ、ちゃんとメモ取れてないので今回はかなり簡単に話します(;´∀`)

AWS Step Functionとは

複数のLambda Functionを組み合わせてシーケンシャルな処理が出来る物です。
コードはJSON形式で書くのですが、JSONで定義された内容をその場で
視覚的な形に変えてくれます。

見てもらったほうが早いかと

というわけで、ブログでデモやります/(^o^)\

1.とりあえず簡単なLambdaを作る

まぁ、適当です。ただ、イベントからなんか貰いたいので
JSONでメッセージ受け取るようにしました。 f:id:yuki_hisa:20170203201434p:plain

2.Step Functionで’Hellow world’を選ぶ

StateMachin名は『sampleStateMachine』とつけました。 f:id:yuki_hisa:20170203201750p:plain

3.設定のJSONをいじる

‘Hellow world’を選ぶとデフォルトでこんな感じになってます。

f:id:yuki_hisa:20170203202102p:plain

“Resource"のところを選択すれば、手持ちのLambdaFunctionの一覧出てきます。
便利ですねヽ(=´▽`=)ノ
ちなみに"StartAt"と"States"を変更すると、ちゃんと上のグラフィック上の'Hellow world’も変わります。
f:id:yuki_hisa:20170203202537p:plain f:id:yuki_hisa:20170203202634p:plain

4.CreateStateMachineでとりあえず作成

ロール指定がありますが、デフォルトのままであれば勝手に出来ます。
注意点はロールがリージョン指定なので、他のリージョンではこのStateMachineは使えません。

f:id:yuki_hisa:20170203202908p:plain f:id:yuki_hisa:20170203203010p:plain

5.起動時の引数を指定

JSON形式で渡します。
作ったLambdaFunctionで'message'で取得するようにしたので以下のように指定 f:id:yuki_hisa:20170203203153p:plain

6.動作確認

正常に動作したらこんな感じになります。
Inputは先程のJSON
f:id:yuki_hisa:20170203203408p:plain

OutPutは結果が表示されます。
f:id:yuki_hisa:20170203203455p:plain

何が嬉しいのか

うん、単一のLambda動かしてもありがたみは無いですよね。
デモでは単一Lambdaしか動かしませんでしたが、これが複数のLambdaも起動出来たりします。

連続起動

f:id:yuki_hisa:20170203212053p:plain

並列処理

f:id:yuki_hisa:20170203212139p:plain

分岐

f:id:yuki_hisa:20170203212250p:plain

こういったLambdaのみしか無かった時には辛い処理も、
JSONで定義するだけで出来るようになりました!!

まとめ

Lambdaしか無い頃は、LambdaとLambdaの間にSQSやSNSを挟んだり等、
連続処理、並列処理、分岐処理、繰り返し処理はかなり辛かったのですが、
Step Functionで組み合わせることで簡単になったのはいい感じだと思います!ヽ(=´▽`=)ノ

面倒だと思ったのは、一度作ったStateMachineは編集できないこと(;´∀`)
あとから修正が加わった場合はStateMachineから作り直し。
しかも、削除しても非同期で削除されるためタイムラグがある。
消えるまでは同じ名前が使用できないためプログラムに組み込んでる場合は、
呼び出し元から変えなければいけないという手間が有ります。

それを差し引いても便利なのは間違いないと思います!