LoginSignup
11
12

More than 5 years have passed since last update.

CloudWatchで定期的にLambdaを実行して、Slackにメッセージを送信する

Last updated at Posted at 2017-11-16

今回のお題

Lambdaのトリガーはいくつか設定できますが、今回は毎週月曜日のAM9時にSLackに通知するのが目的なんで、CloudWatchでLambdaに設定した関数を実行する方法を試して見ます。

LambdaにSlack送信するプログラムを作成する

LambdaからWebHookを使用してSlackにメッセージを送信してみる

別記事で書いたこちらを元に作成。
ちょっとだけ手を加えてあります。

slack.py
# coding: UTF-8
import requests
import json
import os
from datetime import datetime

def lambda_handler(event, context):
    now = datetime.now()
    msg = now.strftime("%Y/%m/%d %H:%M:%S")
    msg += u'\r\nCloudWatch実行\r\nlambdaからのPython使ってのSlack送信・・・何たる僥倖・・・!悪魔的発想・・・!'
    # 実行
    send_slack(u'カイジ', u':kaiji:', 'チャンネル名', msg)

# slack送信、仮メソッド
def send_slack(user_name, icon, channel, msg):
    requests.post('WebHookのURL', data = json.dumps({
        'text': msg, # 投稿するテキスト
        'username': user_name, # 投稿のユーザー名
        'link_names': 1, # メンションを有効にする
        'channel': channel, # チャンネル
        'icon_emoji': icon, # アイコン
    }))

分かりやすくするために、Postするメッセージに日付を入れて見ました。
あとはまぁ、よくある悪ふざけですw
テスト実行で、Slackにメッセージが送信されるのは確認済みです。

Lambdaにトリガーを設定する

トリガーを選択します、+ トリガーを追加を押下します。
スクリーンショット 2017-11-16 23.00.07.png

図の空白になっている、左側をクリックします。
スクリーンショット 2017-11-16 23.02.23.png

すると設定できるリストが表示されるので、今回使用する「CloudWatch Events」を選択します。
スクリーンショット 2017-11-16 23.03.07.png

ルールで「新規ルールの作成」を選択し、必要な項目を埋めていきます。
スケジュール式は、今回はテスト的な内容なんで5分ごとに実行する式を記載しました。
スクリーンショット 2017-11-16 23.05.37.png

トリガーの有効化のチェックがON担っているのを確認し、送信を押下する。
スクリーンショット 2017-11-16 23.07.07.png

トリガーの作成完了

スクリーンショット 2017-11-16 23.07.46.png

Slackを確認する

とりあえず問題なく定期的にSlackの送信ができました!!
スクリーンショット 2017-11-16 23.19.25.png

別枠で検証する事柄

時間がおかしいですね・・・?どこの時間ですかね?
とりあえず、日本時間での実行ができるように調べて見ます。

AWSのLambdaのタイムゾーンをUTCから東京に変更
こちらで、Lambdaでの時間についてはできました!

CloudWatchについては別途調査中です。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12