##はじめに
特に真新しい内容ではないですが、備忘録として記載しておきます。
この記事の続編です。
・AWS MediaLiveチャンネルの停止忘れを防ぐための自動通知設定
https://qiita.com/ktsuchi/items/fe74125df4ee79c97d5d
以前作成したLambdaの通知先としてChatworkを追加しました。
SNSは使わずにLambdaから直接メッセージをチャットワークに飛ばします。
##手順
Chatworkに通知する手軽な方法を探していたところ、
requestsモジュールのPOSTメソッドを利用する方法に行き着いたので、その方法を採用することにしました。
Lambdaの設定箇所のみ記載します。
###requestsモジュールのインストール
まずは下記のドキュメントに従って、requestsモジュールをインストールします。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package.html#python-package-dependencies
###Chatwork API
Chatworkにメッセージを送るには下記2つの情報が必要になります。
取得方法のリンク先を貼っておきます。
・ルームID
https://help.chatwork.com/hc/ja/articles/360000142942
・APIトークン
https://help.chatwork.com/hc/ja/articles/115000172402
###Lambdaコード
今回追記した内容は、後半部分になります。
import boto3
import requests
medialive = boto3.client('medialive')
sns = boto3.client('sns')
def lambda_handler(event, context):
channels = medialive.list_channels()
channel_list = []
for Channels in channels['Channels'] :
if Channels['State'] == 'RUNNING':
name = Channels['Name']
id = Channels['Id']
state = Channels['State']
channel_list.append("| " + name + " | " + id + " | " + state + " |")
print('\n'.join(channel_list))
if channel_list == []:
pass
else:
#to_SNS
request = {
'TopicArn': "<SNSトピックのARN>",
'Message': ('\n'.join(channel_list)),
'Subject': "Running MediaLive Channels"
}
sns.publish(**request)
#to_Chatwork
apiurl = 'https://api.chatwork.com/v2'
roomid = 'xxxxxxxx'
message = ('\n'.join(channel_list))
apikey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
post_message_url = '{}/rooms/{}/messages'.format(apiurl, roomid)
headers = { 'X-ChatWorkToken': apikey }
params = { 'body': message }
r = requests.post(post_message_url,headers=headers,params=params)
print(r)
##参考
https://tonari-it.com/python-chatwork/
https://hacknote.jp/archives/48083/