0
Help us understand the problem. What are the problem?

posted at

updated at

make(旧integromat)を使ってLambdaを実行する〜EC2の起動・停止篇

1.はじめに

makeからLambdaを呼び出し、EC2の起動・停止を行う手順です。

前回の記事はこちら。この記事で作ったリソースをそのまま流用します。

2.今回やること

こんな感じのパイプラインを作ってLambdaを実行します。
Slackのチャンネルに投げたメッセージをトリガーにして、OutgoingWebhooksからmakeのWebhooksを呼び出す。
メッセージは{ key:value }でLambdaに渡して、EC2の起動・停止の判定に利用します。

スクリーンショット 2022-03-28 14.36.14.png

3.アプリの設定

3-1.Slack

今回はStartStopをトリガーにするので、Outgoing Webhooksに以下の設定を行います。

スクリーンショット 2022-03-27 22.27.17.png

そのままの意味ですが、Startから始まるメッセージがチャンネルにポストされればEC2を起動。
Stopから始まるメッセージがポストされればEC2が停止するようにします。

3-2.make

前回の記事で作ったScenarioをそのまま使います。

Lambda側で{ key:value }を使用するので、Bodyの設定も行います。

スクリーンショット 2022-03-28 14.37.55.png

3-3.AWS(Lambda)

公式のEC2の起動・停止プログラムのサンプルにif文を追加しました。

lambda_function.py
import boto3
import json

region = 'ap-northeast-1'
instances = ['i-xxxxxxxxxxxxxxxxx']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    if event['key'] == 'Start':
        ec2.start_instances(InstanceIds=instances)
        print('started your instances: ' + str(instances))
    else:
        ec2.stop_instances(InstanceIds=instances)
        print('stoped your instances: ' + str(instances))

引用元はこちら。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-eventbridge/

ちなみにstart_instancesreboot_instancesにすると再起動もできます。便利だ。。

4.実行してみる

ここまでの手順でStartをメッセージすればEC2が起動、StopでEC2が停止すると思います。
ワークフローから実行できるようにするとより良いかと!

5.ちなみに

今回はLambdaでStartとStopの判定を行っていますが、make側に任せてもいいです。
その場合はRouterを使います。

スクリーンショット 2022-03-28 14.57.41.png

Startで始まるメッセージの場合は上のLambdaをInvokeし、Stopで始まる場合は下のLambdaをInvokeするようRoutingしたScenarioです。
Filterの設定はこんな感じ。

スクリーンショット 2022-03-28 14.58.40.png

Slackにポストするメッセージに合わせてContainsEqual toなど調整してください。

6.おわりに

makeはもっと色々できるし触っていて楽しいSaaSなのですが、導入しているプロジェクトが少なそうなのが難点ですかね…!
ただプログラミングスキルが低いぼくでも慣れればすぐ実装できるGUIは本当に魅力だと思いました。No Codeしゅごい。

以上です。
この記事がどなたかのお役に立てると幸いです:raised_hands:

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?