Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
이전 글에 이어서 이번에는 SNS로 트리거 되는 Slack 알림을 Lambda로 만들어보자.
https://everenew.tistory.com/331
Slack WebHook 추가
일단 사용할 slack 채널을 생성하고 webhook를 추가해 주자.
채널 설정 -> 앱 추가에서
webhook를 추가해서 url을 복사해 주자.
이 url에 올바른 요청을 보내면 해당 slack 채널에 메시지가 보내진다.
Lambda 함수 작성
1. Lambda python 환경 세팅
slack의 webhook url에 http 요청을 보내려면 python의 requests 라이브러리를 사용해야 한다.
하지만, Lambda 빠르게 동작하기 위해 미리 사용할 라이브러리 데이터를 zip형식으로 업로드해야 사용해 할 수 있다.
아래처럼 따라 해서 zip파일을 만들자
// 폴더를 만들고 폴더로 이동 후
pip install requests -t . --no-user
requests.zip으로 압축을 해서 lambda 함수에 업로드를 해주면 import requests를 사용할 수 있다.
그리고 만들었던 webhook url은 환경변수로서 저장해 두자.
2. 코드 작성
이제 lambda_function.py에 아래와 같이 코드를 작성해 주자.
slack 전송 코드는 아래 블로그의 게시글을 참조하였다.
https://jenakim47.tistory.com/99
import json
import requests
import os
def send():
url = os.environ['webhook']
header = {'Content-type': 'application/json'}
icon_emoji = ":slack:"
username = "모니터링"
attachments = [{
"color": "good",
"text": "크롤링 완료"
}]
data = {"username": username, "attachments": attachments, "icon_emoji": icon_emoji}
# 메세지 전송
requests.post(url, headers=header, json=data)
def lambda_handler(event, context):
# 함수 호출
send()
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
3. SNS 트리거 작성
SNS는 Topic의 구독자들에게 message를 전송해 준다.
Lambda가 SNS topic을 구독하면, topic에 message를 publish 하면 Lambda 함수가 트리거가 된다.
트리거 추가를 눌러서 생성한 Topic을 트리거로 설정해 주자.
4. 테스트
이제 이전글에서 작성한 python 코드를 동작시켜서 SNS Topic에 메시지를 보내면, Lambda 함수가 실행되어 채널에 메시지가 전송된다.
'Cloud > AWS' 카테고리의 다른 글
AWS load balancer internal vs internet-facing (0) | 2023.12.23 |
---|---|
AWS Lambda에서 다른 Lambda 비동기 호출하기(python) (0) | 2023.10.22 |
AWS boto3로 SNS Topic에 메시지 전송하기 (python) (0) | 2023.10.10 |
ECS 태스크 실행 오류 (ECR pull error) (0) | 2023.09.19 |
AWS Solutions Architect Associate (SAA - C03) 대학생 합격 후기 (3) | 2023.09.19 |