newdwh2021/lambda/notice-to-slack/notice_to_slack.py
2023-01-26 09:23:23 +09:00

50 lines
1.5 KiB
Python

import json
import os
import urllib.request as request
def make_attaches(event):
"""Slackのリクエストボディ attachmentsを作成する"""
attachments = []
for evt in event.get('Records'):
sns_event = evt.get('Sns')
event_subscription_arn = evt.get('EventSubscriptionArn')
subject = sns_event.get('Subject', 'AWS Notification Message')
sns_timestamp = sns_event.get('Timestamp')
message = sns_event.get('Message')
message_id = sns_event.get('MessageId')
attachments.append({
"fallback": f"Notification from mbj-newdwh2021 AWS: {event_subscription_arn}",
"pretext": f"Notification from mbj-newdwh2021 AWS: {event_subscription_arn}",
"color":"#0000D0",
"fields":[
{
"title": f"{subject}",
"value": f"{sns_timestamp}: {message} (MessageId: {message_id})",
"short": False
}
]
})
return attachments
def lambda_handler(event, context):
attachments = make_attaches(event)
request_url = os.environ.get('SLACK_WEBHOOK_URL')
payload = {
'attachments': attachments
}
headers = {
'Content-Type': 'application/json',
}
print(payload)
req = request.Request(request_url, json.dumps(payload, ensure_ascii=False).encode(), headers, method='POST')
with request.urlopen(req) as res:
body = res.read()
print(body)