【AWS】Lambda関数一式(Slackへの通知アプリ)を ZIP で固めてアップロードして登録して実行する手順【Lambda】【Windows】

公開日時:2022年04月03日 / 最終更新日時:2022年04月03日

AWS Lambda 関数一式(Slackへの通知アプリ)を ZIPで固めて Lambda にアップロードして登録して実行する手順について解説します。

更に EventBridge にも登録して EC2 インスタンスのステータスが変更したら EventBridge から Lambda をキックして Slack に通知させます。

 

簡単な設計

 

 

Slack の準備

初めに Slack の準備をします。

Slack は無料版です。

 

Slack をインストールして起動した後、左側ペインより「アプリを追加する」をクリックします。

 

 

 

検索欄に「incoming-webhook」を入力して検索して「incoming-webhook」をクリックします。

 

 

 

 

「設定」ボタンをクリックします。

 

 

 

ブラウザ上に移動します。

「Slack に追加」ボタンをクリックします。

 

 

 

 

「チャンネルを選択」をクリックして通知したいチャンネルをクリックします。

 

 

 

 

チャンネルを選択して「Incoming Webhook インテグレーションの追加」ボタンをクリックします。

 

 

 

 

Webhook URL が表示されることを確認します。

 

 

ここで Slack の準備は完了です。

 

 

 

ローカル PC に Python の仮想環境を作成する

次はローカルの PC に Python の仮想環境を作成します。

 

 

対象のフォルダに移動します。

c:\work\slack-test>cd c:\work\slack-test

 

venvで仮想環境を作成します。

slack-testという仮想環境を作成します。

 

■venvで仮想環境を作成する

c:\work\slack-test>python -m venv slack-test

 

 

■アクティベートして仮想環境を有効化する

c:\work\slack-test>slack-test\Scripts\activate.bat

 

 

プロンプトが以下のように切り替わることを確認します。

 

■プロンプトが切り替わることを確認

(slack-test) c:\work\slack-test>

 

 

boto3とrequestsをインストールします。

 

■boto3とrequestsをインストールする

(slack-test) c:\work\slack-test>pip install boto3 -t ./

(slack-test) c:\work\slack-test>pip install requests -t ./

 

 

 

インストール直後は下図のようになっています。

 

 

Slack に通知する Python アプリの作成

仮想環境の準備ができたら Slack に通知する Python アプリを作成します。

 

ファイル名:slackAlert.py

同じフォルダ(C:\work\slack-test)にslackAlert.pyファイルを作成します。

 

■Python アプリ

import requests 
import json 
 
slack_web_hook = 'https://hooks.slack.com/services/xxxxxx/xxxxxxxx/SxxxxxxxxxORh9x' 
 
def send_slack(event, context): 
    print(str(event)) 
    slack_message = {'text': 'EC2インスタンスのステータスが変更しました。ご確認ください。'} 
    resp = requests.post(slack_web_hook, data=json.dumps(slack_message)) 
    return resp.text 

 

 

 

 

 

 

 

slack-test フォルダ内のファイルを選択して zip ファイルに圧縮します。

 

 

圧縮ファイル名を「slack.zip」にします。

 

 

 

 

 

AWS Lambda関数を作成する

ZIP ファイルを作成したら Lambda 関数を作成します。

 

Lambda のダッシュボードに移動します。

 

 

 

 

「関数の作成」ボタンをクリックします。

 

 

 

 

「関数の作成」画面で「一から作成」を選択します。

 

 

 

 

以下のように設定します。

 

 

設定したら「関数の作成」ボタンをクリックします。

 

 

 

関数が作成されるので「アップロード元」をクリックして「.zipファイル」を選択します。

 

 

 

 

「アップロード」ボタンをクリックします。

 

 

 

 

slack.zip ファイルをアップロードしたら「保存」ボタンをクリックします。

 

 

 

 

エラーなくアップロードされたことを確認します。

 

 

 

 

 

ランタイム設定をする

次にランタイム設定をします。

 

 

ランタイム設定の「編集」ボタンをクリックします。

 

 

 

 

 

 

ハンドラを「slackAlert.send_slack」と入力します。

モジュール名(ファイル名)(slackAlert.py)とメソッド(send_slack)を入力してどのモジュールのメソッドを実行すればよいかを設定します。

 

 

 

 

テストをする

設定が終わったら動作テストをします。

 

 

「テスト」タブを選択し「イベント名」を入力し「保存」ボタンをクリックします。

 

 

 

 

 

「テスト」ボタンをクリックしてテストを実行します。

 

 

 

Slackに通知が飛ぶことを確認します。

 

 

 

EventBridge を使ってイベントを発生させて Lambda を実行する

EventBridge を使ってイベントを発生させて Lambda を実行する設定をします。

 

 

EventBridge のダッシュボードに移動します。

 

 

 

 

左側ペインより「ルール」をクリックします。

 

 

 

 

「ルールを作成」ボタンをクリックします。

 

 

 

 

 

「ルールの詳細を定義」画面で以下のように設定して「次へ」ボタンをクリックします。

 

 

 

 

 

イベントソースで「AWS のサービス」を選択します。

 

 

 

 

 

 

サンプルイベントで「EC2 Instance State-change Notification」を選択してサンプルを確認します。

 

 

 

 

 

イベントパターンで以下のように設定して「次へ」ボタンをクリックします。

 

 

 

 

 

「ターゲットを選択」画面で以下のように設定して「次へ」ボタンをクリックします。

ターゲットタイプ : AWS のサービス

ターゲットを選択 : Lambda 関数

機能 : SlackAlert

 

 

 

 

「タグを設定」画面で「次へ」ボタンをクリックします。

 

 

 

 

最後に設定内容を確認したら「ルールの作成」ボタンをクリックします。

 

 

 

 

実際に EC2 インスタンスの起動や停止を実施し Slack に通知が来ることを確認します。

 

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Secured By miniOrange