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('잘못된 인덱스입니다.')