개요

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
    })