52 lines
1.5 KiB
Python
52 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')
|
|
if subject is None:
|
|
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)
|