Question
안녕하세요.
저희 계정으로 이용 중인 Lambda 중 특정 함수에 대해 에러 발생 시
슬랙으로 어떤 에러가 발생했는지 알림을 보내주는 기능을 만들고 싶습니다.
Python 기반으로 만들다보니, list에 예상치 못한 IndexError 등이 발생하는데,
어떤 상황에서 발생하는지 알기가 힘들어 우선 모니터링 용도로 만들고 케이스 수집 후 디버깅을 하고자 합니다.
Traceback, IndexError 등으로 lambda function 이 실패하였을 때
슬랙으로 에러를 보내기 위해 어떻게 하면 될지 가이드를 주실 수 있나요?
Answer
문의주신 사항에 대해 안내드리도록 하겠습니다.
1. Lambda 함수 에러 알림을 슬랙으로 전송
에러 알림 설정 하고자 하는 함수를 Lambda_A라고 가정했을 때,
[ Lambda_A → 에러 발생 → CloudWatch → Lambda_B(슬랙으로 메세지 전송) -> 슬랙 ] 흐름으로 구현하시면 됩니다.
Lambda_B는 SES Service로도 대체가 가능합니다.
Lambda_B로 구현하시는 경우, 에러 자체는 항상 CloudWatch에 남기 때문에 CloudWatch를 통해서 결과값을 받고 Lambda를 통해 슬랙으로 연결 시키면 됩니다.
2. 특정 에러가 발생하여 실패하였을 때, 알림 설정 가이드
Lambda 런타임 에러 등은 슬랙으로 보내지 않고, 해당 에러만 슬랙으로 보내고 싶으신 아키텍처를 만들며, 같은 함수내에서 작업을 진행할 경우,
'try except'를 활용해 예외처리로 slack에 전송합니다.
위 구문을 활용하여 slack API 호출을 하는 방법으로 진행하시면 됩니다.
예시 코드는 아래와 같습니다.
※ 해당 예시 코드는 임의 Sample 코드이며, 사용자의 사용사례에 맞추어 코드 작성후 적용하셔야 합니다. try: index, x = map(int, input('인덱스와 나눌 숫자를 입력하세요: ').split()) print(y[index] / x) except ZeroDivisionError: # 숫자를 0으로 나눠서 에러가 발생했을 때 실행됨 print('숫자를 0으로 나눌 수 없습니다.') except IndexError: # 범위를 벗어난 인덱스에 접근하여 에러가 발생했을 때 실행됨 print('잘못된 인덱스입니다.')