Today I Learned
날짜
2024년 7월 25일 목요일
내용
람다의 재요청 방지
데이터 임포트를 요청하면 boto3로 AWS Lambda를 호출하도록 구현했다.
맨 처음에는 RequestResponse로 보냈었다. 그런데 디버깅 과정에서 요청이 실패할때마다 1분 간격으로 재시도가 발생해서, 데이터가 꼬이고 쓸데없는 로그가 많이 남아 힘들었다. 그래서 비동기 호출인 Event로 바꾸었다. 근데 비동기 함수라 로직이 원하는대로 실행되지 않았다.. 알아보니 RequestResponse 호출을 했을 때 요청이 실패하면 AWS에서 자동으로 3회 정도 재시도를 한다고 한다. Lambda 클라이언트를 설정할 때 config를 설정해서 이를 방지 할 수 있었다.
에러처리
꽤 길고 복잡한 로직이다보니 클라이언트의 요청에 즉각적으로 응답할 수 없었다. 그래서 우선 True를 반환하고 Lambda를 호출한다. 프론트에선 True를 반환받으면 10초에 한번씩 임포팅 상태를 추적한다. 만약 임포팅 과정에서 에러가 발생하거나 다른 이유로 중단하면 실패했음을 반환해주어야 하고, 이건 임포트 로그에 반영되어 저장되야 한다.
결국 곳곳에, 함수마다 try-except 문을 설치했다
상당히 더러운데… 더 좋은 방법을 생각해봐야겠다.
회고
될듯 안될듯 될듯 안될듯 될듯 안될듯 안된다.