20161206 re growth-tokyo-maroon1st

Post on 16-Apr-2017

627 views 0 download

Transcript of 20161206 re growth-tokyo-maroon1st

個人的に一番ササッたStep Functions を軽くだけ触ってみた

States Language って何物?

classmethod.jp 1

2016 年 12 月 6 日 大栗 宗

お前誰よ?

• 大栗 宗( @maroon1st )

• re:Invent は入社してからずっと参加3 回連続で合計 3 回

• ブログ以外の仕事は AWS の導入支援など

• 好きなサービスRDS/SSM/CloudFormationStep Functions ← New!

• シガー検定 ( はじめての葉巻検定 )AWS エキスパート養成読本

classmethod.jp 2

classmethod.jp 3

re:Invent 期間中に開催された

AWS ウルトラクイズで優勝しました!

classmethod.jp 4

classmethod.jp 5

でも Japan Tour の中

classmethod.jp 6

いづれは世界デビュー

アジェンダ

• Step Functions とは?

• 何ができるの?

• Amazon States Language• ちょっとしたデモ

• まとめ

classmethod.jp 7

STEP FUNCTIONS とは?

classmethod.jp 8

Step Functionsビジュアルなワークフローにて、アプリケーションのコンポーネントを一連のステップとしてコーディネートすることが出来ます。→ つまり Lambda などを色々つなげて、いい感じに連携できて、大きな処理をワークフローとしてビジュアル化、実行できるサービス。

classmethod.jp 9

Step Functions

classmethod.jp 10

Step Functions

classmethod.jp 11

Step Functions

ちなみに Lambda 以外も動きます。Q: How does AWS Step Functions work with other AWS services?AWS Step Functions works in conjunction with several other AWS services – including AWS Lambda, Amazon EC2, Amazon EC2 Container Service (ECS), Amazon CloudWatch, and Auto Scaling.Tasks can be implemented using Lambda functions, or using programs running on EC2 or in ECS containers.

classmethod.jp 12

何ができるの?

classmethod.jp 13

ステートマシン

入力条件と現在の状態によって次の状態が決まる順序回路をステート・マシンと呼びます。状態遷移図でモデル化します。手順に従って制御を行う場合などによく使用します。

classmethod.jp 14

Lambda 連携

今までは Lambda で大きな処理を行う場合には、 Lambda から Lambda を呼ぶ必要があった。

Lambda Functions 同士が密結合してメンテナンス性が低かったが Step Functions により依存を外部で記述できるようになり疎結合に記述できる。

classmethod.jp 15

バッチジョブのフロー定義

EC2 や ECS の処理を Activity として定義して連携ができる。いわゆるジョブフローも定義可能。正直 AWS Batch との住み分けが。。。

classmethod.jp 16

AMAZONSTATES LANGUAGE

classmethod.jp 17

Amazon States Language{ "Comment": "A Catch example of the Amazon States Language", "StartAt": "HelloWorld", "TimeoutSeconds": "1200", "Version": "1.0", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME", "Catch": [… ], "End": true }, "CustomErrorFallback": {… } }}

classmethod.jp 18

Amazon States Language• States– ワークフロー全体

• 以下がある– Task– Wait– Pass– Succeed– Fail– Choice– Parallel

classmethod.jp 19

Amazon States LanguageStates• Task–任意のコードで記述するアクティビティ–主に Lambda を使用– EC2 や ECS も実行できる

classmethod.jp 20

Amazon States LanguageStates• Wait–指定された時間待つ–期間を秒数で指定したり時刻を指定

• Pass–何もしない–入力をそのまま出力する

classmethod.jp 21

Amazon States LanguageStates• Succeed– 正常に停止する

• Fail– 異常終了する

• Choice– 条件により処理を分岐させる

• Parallel– 処理を並列に実行する

classmethod.jp 22

Amazon States LanguagePaths• 入出力で使用する JSON データの指定

classmethod.jp 23

Path Value

$.foo 123

$.bar ["a", "b", "c"]

$.car.cdr true

Amazon States LanguageErrors実行時のエラーを定義する• States.ALL

– 全てのエラーに一致• States.Timeout

– タスクのタイムアウト• States.TaskFailed

– Task の実行エラー• States.Permissions

– 権限不足によるエラー

classmethod.jp 24

Amazon States LanguageErrors• エラー発生時のリトライを記述できる

"Retry" : [ { “ErrorEquals”: [ “States.Timeout” ], ← エラーの種類 “IntervalSeconds”: 3, ← リトライ間隔 “MaxAttempts”: 2, ← リトライ数 “BackoffRate”: 1.5 ← エクスポネンシャルバックオフ! }]

classmethod.jp 25

Amazon States LanguageErrors• スローされた Error のハンドリングも可能

"Catch": [ { "ErrorEquals": [ "java.lang.Exception" ], "ResultPath": "$.error-info", "Next": "RecoveryState" }, { "ErrorEquals": [ "States.ALL" ], "Next": "EndState" }]

classmethod.jp 26

Amazon States LanguageFilters• 入力、出力、実行結果のデータをフィル

タリング可能

"InputPath": "$.numbers","ResultPath": "$.sum”,"OutputPath": "$"

classmethod.jp 27

デモ

classmethod.jp 28

まとめ

• Step Functions は Lambda などを繋げて、大きな処理をワークフローとして実行するサービス

• 処理を状態遷移図として記述すれば Step Functions の設計になる

• 結局は Amazon States Language を覚える必要がある

classmethod.jp 29