개요
AWS SNS를 통해 Slack 알림을 보낼일이 생겼다. 이방법을 찾아 본 뒤 막힐만한 부분만 따로 정리한다.
개념 요약
SNS Topic -> Lambda Function -> Slack Web hook 으로 알림 전송
슬랙 Web Hook URL 보는법
Manage Appas
-> 오른쪽 상단의Build
메뉴를 통해 webhook을 확인 할 수 있다.
Lambda용 Function 코드
# Lambda Slack Webhook Code
import urllib3
import json
http = urllib3.PoolManager()
def lambda_handler(event, context):
url = "webhook url"
msg = {
"channel": "#adw_notification",
"username": "adw_notification",
"text": event['Records'][0]['Sns']['Message'],
"icon_emoji": ""
}
encoded_msg = json.dumps(msg).encode('utf-8')
resp = http.request('POST',url, body=encoded_msg)
print({
"message": event['Records'][0]['Sns']['Message'],
"status_code": resp.status,
"response": resp.data
})