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”,
と書いていることに気づかずに上記エラーで少し嵌りました。
次は分岐とループを調べたいです。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
PyCharmにAWS Tool kitをインストールしてサンプルのLambda関数をデプロイして実行しました
この記事はJetBrainsIDE Advent Calendar 2018に参 …
-
-
AWS CDKでクロススタックリファレンスをする
CloudFormationで複数のスタックで参照することがあります。 それをC …
-
-
S3に置いたMP3ファイルをTwilioから電話再生する(AWS Lambda Python)
Google Calendar Twilio ReminderのTwilioを使 …
-
-
AWS Organizationsからメンバーアカウントを直接「閉じる」ことができるようになりました
これまでは、メンバーアカウントはOrganizations組織から「除外」して独 …
-
-
AWS Organizations組織の移動
AWS Organizations組織の移動 やりたいことは、Organizat …
-
-
Amazon Auroraのスナップショットの暗号化とリージョン間コピーを改めて試しました
Amazon Auroraデータベースを暗号化して、スナップショットを作成、クロ …
-
-
RDSの証明書をrds-ca-2019に更新しました
クライアント接続で署名書使ってないので、必要ないのですが、古いままなのも気持ち悪 …
-
-
AWS Systems Manager Fleet Manager Windows RDP Connectを試してみました
AWS Systems Manager Fleet Manager Window …
-
-
Developers Summit 2018 「AWSのフルマネージドな環境でCI/CDをやってみよう!AWS Cloud9からAWS Fargateへの継続的デプロイをご紹介」を聞きました
※写真は展示のAmazon Echoです。 以下は、思ったことや気になったことを …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …