make(旧integromat)を使ってLambdaを実行する


1.はじめに

make(旧integromat, 以下本記事ではmakeで記します)からLambdaを呼び出す手順です。
ただそれだけなのですが、makeに関する情報が少なく難儀したので、やったことを書き留めました。

2.今回やること

こんな感じのパイプラインを作ってLambdaを実行します。
Slackのチャンネルに投げたメッセージをトリガーにして、OutgoingWebhooksからmakeのWebhooksを呼び出す。
WebhooksはSlackやGmailに代替しても同じことができると思います。

3.アプリの設定

一般的な手順で各アプリに対して設定を行い、パイプラインを作ります。

3-1.Slack

適当なチャンネルを作成する。パブリックとプライベートどちらでも構いません。
このチャンネルにキーワードを投げるとmakeが反応するようにします。

3-2.make

この段階ではサインアップしてアカウントだけ作っておく。
リージョンはUS, EUどちらでもOKです。

3-3.AWS(Lambda)

Lambdaの実行ログに文字列をprintするだけのかんたんなpythonプログラムです。
公式に良い感じのコードがあったのでそれをコピペして不要な箇所を削除しただけ。

okome_make_dev_function
import boto3

def lambda_handler(event, context):
    print('started your instances: ')

けどちゃんと動くのでAWSすごいな!っていつも思います。
引用元はこちら。EC2の起動・停止プログラムのサンプルです。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-eventbridge/

テストで動かして、CloudWatch Logsにstarted your instances: が出力されればLambdaの準備は完了です。

3-4.AWS(IAM)

今回はmake専用のIAMユーザを作成します。
GUIは使用しないのでCLIのみ、LambdaのFullAccessをアタッチする。
いつも使ってるユーザとかシステムユーザ的なアカウントがあればそちらでもいいと思います。

アクセスキーとシークレットキーをmakeの設定で使います、控えておいてください。

4.Scenarioを作る

ここからmakeの設定を行います。

4-1.Webhooksモジュール

適当に作る。GUIがわかりやすいので迷わないはず。
このタイミングでhookするURLが生成されるので、SlackのOutgoingWebhookを先ほど作ったチャンネルにアプリ追加で紐づけてあげます。
手順は一般的なやり方で設定する。キーワードも任意で構いません。

4-2.Lambdaモジュール

関数の呼び出しにはInvoke a Functionを使います。

Connectionに先ほど作成したIAMユーザのアクセスキーとシークレットキーを入力、認証が通ればリストからLambdaが選べます。

4-3.補足:Bodyについて

Bodyには{ "key":"value" }形式でLambdaに値を渡せます。
渡せる値はWebhooksで確認できます。

実際に設定する時はこんな感じ。

Lambda側でkeyを変数として宣言してあげれば、渡した値(今回だと文字列Run Function)をプログラムで利用可能です。

5.実行してみる

あとはシナリオを保存し、Run onceでテストしてみたり、シナリオをONにして実行してみてください。
Slackのチャンネルにキーワードをメッセージすると、make経由でLambdaが動くと思います。

Errorが出てもGUIがわかりやすく教えてくれます。エラーログも出力される。
読んで対処してみてください。

6.おわりに

実際に業務で使うとなるとRouterやFilterを使ったりしてもっと複雑になると思いますが、ベースはこれでOKかと。
細かいところを端折っていますが、makeのGUIがめちゃくちゃわかりやすいのであまり迷わないと思います。

以上、ぼくもしばらくこの手のSaaSを使う機会が無さそうなので備忘録を兼ねた記事でした。
どなたかのお役に立てると嬉しいです!