AWS Step Functions まずはパラレルでLambdaを並列実行してみました
複数のlambdaの実行制御をLambdaでやってましたが、その部分をStep Functionsで可視化して分けられるのかと思い使えるようにしていきたいと思います。
まずは、パラレルでLambdaを並列実行してみました。
目次
試すこと
最初のLambdaがSQSにキューを作って、次の2つのLambdaがキューの内容を並列でSlackへ投稿します。
Step Functionsの設定
Step Functionsのグラフはこうなりました。
Step Functionsのコードはこちらです。
これをコードに書くとグラフが上記のようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
{ "Comment": "SQS Paralell Test", "StartAt": "set_queue", "States": { "set_queue": { "Type": "Task", "Next": "slack_post", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:set_queue" }, "slack_post": { "Type": "Parallel", "Next": "Final State", "Branches": [ { "StartAt": "slack_post1", "States": { "slack_post1": { "Type": "Task", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:slack_post", "End": true } } }, { "StartAt": "slack_post2", "States": { "slack_post2": { "Type": "Task", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:slack_post", "End": true } } } ] }, "Final State": { "Type": "Pass", "End": true } } } |
最初のLambdaの設定
|
1 2 3 4 |
"Comment": "SQS Paralell Test", "StartAt": "set_queue", "States": { |
- Comment : コメントを記載します
- StartAt : 最初に起動するステートを指定します
- States : ステートを記入していきます
|
1 2 3 4 5 6 |
"set_queue": { "Type": "Task", "Next": "slack_post", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:set_queue" }, |
最初に実行するステートとして”set_queue”を指定したので、”set_queue”の内容を定義します。
- Type : Lambdaを実行する場合”Task”を指定します。
- Next : このステートが正常終了した次に実行するステートを指定します。
- Resource : Lambdaのarnを指定します。
並列で実行するLambdaの設定
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
"slack_post": { "Type": "Parallel", "Next": "Final State", "Branches": [ { "StartAt": "slack_post1", "States": { "slack_post1": { "Type": "Task", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:slack_post", "End": true } } }, { "StartAt": "slack_post2", "States": { "slack_post2": { "Type": "Task", "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:slack_post", "End": true } } } ] }, |
- Type : 並列実行のステートとして”Parallel”を指定します。
- Next : 並列実行するステートがすべて正常終了した次に実行するステートを指定します。
- Branches : ステートの固まり(States)の配列を定義します。
Branchesの配列の中はそれぞれがStatesとなるので、”StartAt”から指定する必要があるようです。
終了処理
|
1 2 3 4 5 |
"Final State": { "Type": "Pass", "End": true } |
- Type : 何もしない”Pass”を指定します。
- End : 終了なので trueを指定します。
コード
githubにおいてます。
手っ取り早く試したい方はSlackのwebhook incomingとSQSの設定をしてご利用ください。
余談 嵌ったエラー
「AWL 定義に問題があります。確認してもう一度お試しください」
“Type”: “Task”,
を
“Type”: “task”,
と書いていることに気づかずに上記エラーで少し嵌りました。
次は分岐とループを調べたいです。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS複数アカウントのリソースをLambda(Python)から一括操作したくて
AWSの複数アカウント(30ちょい)のリソースをまとめて自動処理したくて。 とり …
-
-
Amazon Aurora Serverless 課金確認
Amazon Aurora Serverlessを使い始めてみましたの記事で書い …
-
-
Amazon Linux2のジャンボフレーム
ユーザーガイドのEC2 インスタンスのネットワークの最大送信単位 (MTU)を試 …
-
-
AWS WAFをSIEM on Amazon OpenSearch Serviceで可視化
SIEM on Amazon OpenSearch Serviceを構築の環境に …
-
-
AWS Cost Explorerの設定で「EC2リソースの推奨事項を受け取る」を有効にしました
「EC2リソースの推奨事項を受け取る」という機能がAWS Cost Explor …
-
-
AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する
参考ページ クイックスタート: 実行中の EC2 インスタンスに CloudWa …
-
-
Amazon Aurora Serverlessを使い始めてみました(1日経過しての課金結果も)
祝!!! Amazon Aurora ServerlessがGAになりました! …
-
-
AWS Lambdaで「Process exited before completing request」
AWS lambdaで「Process exited before comple …
-
-
Amazon Chimeのチャットを使ってみました
Amazon Chimeはビデオミーティングや配信したりというサービスですが、チ …
-
-
EC2スポットインスタンスの中断通知を受ける
オートスケーリンググループでEC2インスタンスをスポットインスタンスで使用してい …


