전태호
알통(artong.io)프로덕트 개발 중에 일어난
사고기록을 공유해봅니다.
제가 직접 작성했으며 이슈가 생길때마다 작성중입니다:)
누군가는 이 글을 보고 도움이 되길 바라며😇
아래는 22년 10월에 작성된 반성문 원문입니다.
현재 프로필사진 등의 이미지를 변경하면
FE 에서 s3로 직접 이미지가 업로드되고
트리거가 작동하여 thumbnail을 생성하고 있습니다.
BE api server의
serverless.yml에 정의된 트리거를 보면
image:handler: artong/handler/image.handler
events:
- s3:bucket: ${self:provider.environment.S3_BUCKET}
event: s3:ObjectCreated:*rules:
- prefix: public/profile/
existing: true
s3 key에 public/profile/ 로 시작하는 폴더를 감시해서
image.ts의 handler와 updateProfileThumbnail 함수를 호출하고 있습니다.
updateProfileThumbnail 함수는
sharp.js를 이용하여 이미지를 resize 해주고
다시 s3에 저장하는 로직인데 여기서 저장할 s3의 key를
trigger가 발동하는 public/profile/thumbnail 을 해준 것이 화근이었습니다.
단 한줄의 실수가
tigger를 받아서 저장하고 또 trigger하고 또 trigger하고… 무한루프를 돌려서 결국
정상적인 요금의 6배 정도..
수업료라고 생각하기엔 너무 아깝습니다..
환율이 올라서 더 아프게 느껴지는 수업료ㅠㅠ
현재는 폴더를 /public/thumbnails/profile로 분리해 주었습니다.
하지만 aws 문서를 찾아보니 사고를 방지하기 위해 s3 bucket 자체를 다르게 잡아주기를 추천하고 있습니다.
우선은 폴더로 구분해주고 사고 기록을 남겨둡니다.
TODO list 에 적어놓자. thumbnail용 s3 새로 파기!
알통
누구나 기여가능한 오픈아트 NFT 거래소