AWS Step FuntionsでAmazonステートメント言語入門
Step Functionsを使うにはAmazonステートメント言語というJSON形式の言語を勉強しておく必要があります。
と言ってもすごく簡単です。以下は一番簡単なAmazonステートメント言語です。
{ "StartAt": "HelloWorlds", // この値と "States": { "HelloWorlds": { // この値は同じにする "Type": "Pass", // Typeは必須 "Result": "Hello World!", "End": true } } }
ビジュアルワークフローはこんな感じになります。
type:passにすると単純にインプットに対してアウトプットするだけになります。
実行するとこんな感じで成功失敗などがわかります。
Lambdaを呼び出す
type:taskにすることによってLambdaを呼び出すことが出来ます。
{ "StartAt": "Lambda", "States": { "Lambda": { "Type": "Task", // TaskにしたらResourceは必須 "Resource": "arn:aws:lambda:xxxx:xxxx:function:sample-lambda:$LATEST", "End": true } } }
ビジュアルワークフローはこんな感じになります。
実行します。
こんな感じでLambdaを実行することが出来ました。
Lambdaの後続処理でLambdaを実行する
Step FunctionsではLambdaをパラレルで実行したり、Lambdaが終わった結果によって後続の処理を分岐したりと、処理をいろいろと記述する事が可能です。
ここでは単純にLambdaの次にLambdaを直列実行する例をAmazonステートメント言語で書いてみます。
{ "StartAt": "Lambda-A", "States": { "Lambda-A": { "Type": "Task", "Resource": "arn:aws:lambda:xxx:xxx:function:sample-lambda-a:$LATEST", "Next":"Lambda-B" // Nextで次のタスクを指定する }, "Lambda-B": { "Type": "Task", "Resource": "arn:aws:lambda:xxx:xxx:function:sample-lambda-b:$LATEST", "End": true } } }
“Next”では、現在の状態が終了するときに実行される次の状態の名前を指定します。
ビジュアルワークフローはこんな感じになります。
実行します。
こんな感じでLambdaを実行することが出来ました。
パラレルでLambdaを実行する
Step Functionsではパラレル処理も定義する事が可能です。
"Type": "Parallel"
とします。
{ "StartAt": "Lambda-Parallel", "States": { "Lambda-Parallel": { "Type": "Parallel", "Next": "Final", "Branches": [ { "StartAt": "Lambda-A", "States":{ "Lambda-A":{ "Type": "Task", "Resource": "arn:aws:lambda:xxx:xxxx:function:sample-lambda1:$LATEST", "End": true } } }, { "StartAt": "Lambda-B", "States":{ "Lambda-B":{ "Type": "Task", "Resource": "arn:aws:lambda:xxx:xxxx:function:sample-lambda:$LATEST", "End": true } } } ] }, "Final": { "Type":"Pass", "End": true } } }
ビジュアルワークフローはこんな感じになります。
実行します。
リトライ回数を設定する
Step FunctionsではTaskにリトライ回数などを指定することができます。
{ "StartAt": "Error-Lambda", "States": { "Error-Lambda": { "Type": "Task", "Resource": "arn:aws:lambda:xxx:xxxx:function:error-sample:$LATEST", "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 1, "MaxAttempts": 2, "BackoffRate": 2.0 } ], "End": true } } }
以下、エラー処理の各フィールドの意味です。
フィールド | 意味 |
---|---|
ErrorEquals | エラー名に一致する空でない文字列の配列です |
IntervalSeconds | 最初の再試行前の秒数を表す整数 |
MaxAttempts | 再試行の最大回数を表す正の整数 |
BackoffRate | 各試行間で再試行間隔が増加する乗数 |
リトライさせて、処理中の動きを見てみます。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント