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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
AWSのAmazon LinuxにGitマスターサーバをインストールしてRedmineリポジトリブラウザで見る
Amazon LinuxにGitをインストールする Gitをインストールして自動 …
-
-
「機械学習モデルをトレーニングする」チュートリアル
Amazon SageMaker Clarifyのデモを記録しておきたいので「機 …
-
-
S3 Intelligent-Tieringのオブジェクトの階層移動をCloudWatchメトリクスで確認
CloudWatchメトリクスの保存期間は現時点で15ヶ月(455日)なのでそろ …
-
-
AWS Lambda KMSを使って環境変数を暗号化、復号化する(Python)
Lambda内で外部APIを使用する場合などをユースケースとして、環境変数をKM …
-
-
NGINXで500と502のエラーが実は頻発していたらしい
先日Mackerelで当ブログの外形監視を始めたのですが、500と502のエラー …
-
-
Amazon CodeCatalystのスペースとプロジェクトを作成してみました
Amazon CodeCatalystはIAMユーザーで操作するのではなく、AW …
-
-
ACM(AWS Certificate Manager)の承認メールを受け取るためにAmazon SESを設定する
何のためでもいいのですが、ドメインは持っているけど、そのドメイン宛にメールを送ら …
-
-
AWS Transform Webアプリケーションを有効化してみた
AWS Migration Hubが2025/11/7に新規お客様への提供が終了 …
-
-
AWSのサービス数を数えてみました(2020/5/23)
何をもってサービスという単位にするかというのはあるかもしれませんが、とりあえず情 …
-
-
CloudFrontからのバーチャルホストなサイトのテストってどうしてます?
このブログの構成です。 AWSで構築しています。 4つのサイトを1つのEC2で配 …


