make(旧integromat)を使ってLambdaを実行する〜EC2の起動・停止篇
1.はじめに
makeからLambdaを呼び出し、EC2の起動・停止を行う手順です。
前回の記事はこちら。この記事で作ったリソースをそのまま流用します。
2.今回やること
こんな感じのパイプラインを作ってLambdaを実行します。
Slackのチャンネルに投げたメッセージをトリガーにして、OutgoingWebhooksからmakeのWebhooksを呼び出す。
メッセージは{ key:value }
でLambdaに渡して、EC2の起動・停止の判定に利用します。
3.アプリの設定
3-1.Slack
今回はStart
とStop
をトリガーにするので、Outgoing Webhooksに以下の設定を行います。
そのままの意味ですが、Startから始まるメッセージがチャンネルにポストされればEC2を起動。
Stopから始まるメッセージがポストされればEC2が停止するようにします。
3-2.make
前回の記事で作ったScenarioをそのまま使います。
Lambda側で{ key:value }
を使用するので、Bodyの設定も行います。
3-3.AWS(Lambda)
公式のEC2の起動・停止プログラムのサンプルにif文を追加しました。
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_instances
をreboot_instances
にすると再起動もできます。便利だ。。
4.実行してみる
ここまでの手順でStart
をメッセージすればEC2が起動、Stop
でEC2が停止すると思います。
ワークフローから実行できるようにするとより良いかと!
5.ちなみに
今回はLambdaでStartとStopの判定を行っていますが、make側に任せてもいいです。
その場合はRouterを使います。
Startで始まるメッセージの場合は上のLambdaをInvokeし、Stopで始まる場合は下のLambdaをInvokeするようRoutingしたScenarioです。
Filterの設定はこんな感じ。
Slackにポストするメッセージに合わせてContains
やEqual to
など調整してください。
6.おわりに
makeはもっと色々できるし触っていて楽しいSaaSなのですが、導入しているプロジェクトが少なそうなのが難点ですかね…!
ただプログラミングスキルが低いぼくでも慣れればすぐ実装できるGUIは本当に魅力だと思いました。No Codeしゅごい。
以上です。
この記事がどなたかのお役に立てると幸いです
Author And Source
この問題について(make(旧integromat)を使ってLambdaを実行する〜EC2の起動・停止篇), 我々は、より多くの情報をここで見つけました https://qiita.com/sosat/items/c38e8be82c544e940a36著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .