ヤマムギ

growing hard days.

*

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (4)Step Functionsで複数のLambdaを実行制御する

      2017/08/18

作る部分

Step Functionsでこれまで作ったLambdaの実行制御をします。

プログラム

Github-yamamugi_handson_sf_initにあります。

今回は外部モジュールは使わないのでプログラムはzipアップロードではなく、インラインエディタで編集します。

プログラム解説

一部抜粋

  • StepFunctionsから受け取ったデータを取得します。
  • 次のパラレルステートに渡すデータをオブジェクトに入れてStep Functionsに返します。

Lambda関数の作成

AWSマネジメントコンソールでLambdaを開いて、[関数の作成]をクリックします。

何も選択せず、[一から作成]をクリックします。

何も選択せず、[次へ]をクリックします。

名前 : 1_sf_init
説明 : ヤマムギハンズオン StepFunctionsの最初のステート
ランタイム : Python 3.6

こちらのコードをクリップボードにコピーしておきます。

コードエントリタイプは「コードをインラインで編集」のままで、
元からあるコードを消して、
コピーしたコードを貼り付けます。

環境変数
* LOG_LEVEL : DEBUG(ログを減らしたい場合は ERRORかINFOを設定します)

既存のロールから、手順1と同じlambda_basic_executionを選択します。
[次へ]をクリックします。

[関数の作成]をクリックします。

右上のテストをクリックします。

テストイベントを上記で設定して[保存してテスト]をクリックします。

このような結果になればOKです。

StepFunctionsの作成

はじめてStepFunctionsを作成する場合は、上記の画面となるので[今すぐ始める]をクリックします。

はじめてでない場合はStepFunctionsマネジメントコンソールで[ステートマシンの作成]をクリックします。

ステートマシン名は「sf_1」とします。

ステップ2 : 設計図は何も選択しません。

JSONをクリップボードにコピーしておきます。
(Githubのrawからコピーすると項目のダブルクォーテーションが除去されてこの後エラーになるのでご注意ください。)

コードに貼り付けます。

Resource((4箇所))のダブルクォーテーション内をクリックするとLambdaのARNの候補が表示されるので、ステート名と同じものを選びます。
もしくは「xxxxxxxxxxxx」(4箇所)をアカウントIDに書き換えます。

アカウントIDはマネジメントコンソールの右上のアカウントをクリックして表示される[アカウント]メニューで確認出来ます。

アカウントIDはハイフンなしの12桁の数字です。

ビジュアルワークフローの更新アイコンをクリックしてこのように表示されるとOKです。

[ステートマシンの作成]をクリックします。

ステートマシン実行のIAMロールでそのまま[OK]をクリックします。

[新しい実行]をクリックします。

上記を設定して、[実行の開始]をクリックします。

すべてが緑になって完了すればOKです。

StepFunctionのJSONの解説

詳細は公式のAmazon States Languageでご確認ください。

今回使用している範囲の解説です。

  • Comment : コメントです。なんでもいいです。
  • StartAt : States内にあるステートのどこから始めるかを指定します。
  • States : ステートをカンマ区切りで記述します。
  • Type : Lambdaの場合は”Task”を、パラレルの場合は”Parallel”を何もしない場合は”Pass”を指定します。
  • Next : 次に実行するステートを指定します。
  • OutputPath : ステートから出力する変数を記述します。”$”にするとそのままのアウトプットです。
  • InputPath : 直前のステートのOutputPathをそのまま受け取る場合は”$”にします。一部を受け取る場合は”$.to_kintone”などにします。配列の場合”$.a[0:2]”なども可能です。
  • Resource : Lambdaの場合、Lambda関数のARNを指定します。
  • Branches : Parallelで並列に実行するステートをカンマ区切りで記述します。
  • End : States内の終了のステートの場合Trueで指定します。

LambdaのARN

これです。

目次

(1)LambdaからSlackへ通知する1

(2)LambdaからSlackへ通知する2

(3)Lambdaからkintoneへレコードを登録する

(4)Step Functionsで複数のLambdaを実行制御する ←今ここ

(5)LINEからの投稿へ返信と登録処理

(6)Twilioからの電話受付と登録処理

(7)ラッキーコンテンツ


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - event, study , , ,

ad

ad

  関連記事

Developers Summit 2018 「「技術内閣制度」2年間やってきて得られた事とこれから ~開発チーム横断での技術課題解決、技術力強化、エンジニア文化醸成」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

JAWS DAYS 2018 「Cost-Driven AWS クラウドアーキテクチャデザインとコスト最適化方法 – Cost-Driven AWS Cloud Architecture Design : The Lean Startup on AWS」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

「JAWS-UG朝会 #20」に参加しました

恒例のラジオ体操からっ! はじめてのEKS Kubernetes案件 勉強方法 …

「自ら修羅の道を作り、修羅場を楽しみ、自内外に変化を起こし続ける」(『ソフトウェアファースト』読書感想)

「ソフトウェア・ファースト あらゆるビジネスを一変させる最強戦略」を読みました。 …

Developers Summit 2024「LLMで切り拓く完全自動運転の道、エンジニアが創るクルマの未来」を見ました

チューリング株式会社 取締役CTO 青木 俊介さん 「ハンドルがない乗用車」の販 …

Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってきました

Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってき …

Developers Summit 2024「エンジニアの成長とそれを支える組織の考え方」を見ました

株式会社ビッグツリーテクノロジー&コンサルティング CTO 高安 厚思さ …

「4年ぶりの大阪開催!! CMC_Meetup 大阪 Vol.4」に参加しました

4年ぶり開催のCMC_Meetup 大阪に参加しました。 コラボレーションスペー …

Pepper 開発 ワークショップ初級~中級~番外編に1日で一気に参加した

Pepperの開発方法が知りたかったので、Pepperアトリエ秋葉原 with …

Java SE 7 Silver対策勉強をしながらメモ 2015/1/29

さて本日は少しだけですが、試験対策のメモをいつものごとくマークダウンで記載したの …