こんにちは。
表題の通り、CloudWatch の Alarm 通知を Chatwork に通知してみます。
ランタイムは前回と同じく python 3.7 です。
ROOMNO にメッセージを通知するルームナンバ、 TOKEN に ChatWorkToken を定義すれば動きます。
import boto3 import json import logging import os import urllib from base64 import b64decode from urllib.request import Request, urlopen from urllib.error import URLError, HTTPError # Chatwork のルームナンバ定義 ROOMNO = 'xxxxxxxxxxxxxxxx' # WEB_HOOKURL URL = f'https://api.chatwork.com/v2/rooms/{ROOMNO}/messages' # ChatWorkToken 定義 TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): logger.info("Event: " + str(event)) # メッセージ取得 message = json.loads(event['Records'][0]['Sns']['Message']) logger.info("Message: " + str(message)) alarm_name = message['AlarmName'] new_state = message['NewStateValue'] reason = message['NewStateReason'] # ヘッダ情報 headers = { 'X-ChatWorkToken': TOKEN, } # 通知内容 sns_message = { 'body': "%s state is now %s: %s" % (alarm_name, new_state, reason), } # エンコード msns_message = urllib.parse.urlencode(sns_message) msns_message = msns_message.encode('utf-8') # リクエスト発行 req = Request(URL, data=msns_message, headers=headers) with urlopen(req) as res: result = json.loads(res.read().decode("utf-8"))