今回のお題
Lambdaのトリガーはいくつか設定できますが、今回は毎週月曜日のAM9時にSLackに通知するのが目的なんで、CloudWatchでLambdaに設定した関数を実行する方法を試して見ます。
LambdaにSlack送信するプログラムを作成する
LambdaからWebHookを使用してSlackにメッセージを送信してみる
別記事で書いたこちらを元に作成。
ちょっとだけ手を加えてあります。
# 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にトリガーを設定する
すると設定できるリストが表示されるので、今回使用する「CloudWatch Events」を選択します。
ルールで「新規ルールの作成」を選択し、必要な項目を埋めていきます。
スケジュール式は、今回はテスト的な内容なんで5分ごとに実行する式を記載しました。
トリガーの有効化のチェックがON担っているのを確認し、送信を押下する。
トリガーの作成完了
Slackを確認する
別枠で検証する事柄
時間がおかしいですね・・・?どこの時間ですかね?
とりあえず、日本時間での実行ができるように調べて見ます。
AWSのLambdaのタイムゾーンをUTCから東京に変更
こちらで、Lambdaでの時間についてはできました!
CloudWatchについては別途調査中です。