boto3로 S3 관리하기

2024년 8월 22일 목요일

Today I Learned

날짜

2024년 8월 22일 목요일

내용

불친절한 이웃 네이버

그래도 내가 쓴 코드라 그런지, 로직은 쉽게 고쳤다. 곤란한 경우가 있었는데, 보고서 생성 요청을 보내도 반환값의 downloadUrl 은 빈값이 들어온다. status 가 REGIST 라고 들어오는데 “니가 보낸 만들어달란 요청 받았음” 이라는 뜻이란다. 그냥 바로 만든거 달라고… 뭐 별수있나 만들고 요청을 보내야지. 그래서

만들고 ⇒ 응답값에 들어있는 reportId 로 다운로드 링크 조회하고 ⇒ 그 링크에서 다운로드

로 변경했다.

근데 웬걸? 조회 요청의 응답에 status 가 RUNNING 으로 온다. 아직 만드는 중이라는 뜻인데 생각보다 생성이 느리다. 어쩔수 없이 40일치 생성 ⇒ 40일치 다운로드 로 로직을 변경했다.

네이버 검색광고 API에 대해 불만인 점은 Docs가 너무 불친절하다는 거다. status 응답값이 각각 어떤 의미인지를 안말해준다. 본인들 github issue에 있는 4년전 질문에 대한 답변에서 찾을 수 있었다. 응답값이 어떤 의미인지 Docs에 적으라고..

재요청 시간 단축하기

많게는 400일치, 적게는 90일치의 데이터를 매일 가져와야 한다. 이 중 의미없이 반복되는 데이터의 양을 줄이려고 한다. 알아보니 30일이 지난 데이터는 더이상 갱신되지 않는다고 하니, 그 이후 데이터는 처리해서 저장하려고 한다.

데이터베이스에 저장할까 생각했는데 나중에 너무 커질 것 같기도 하고.. {고객의 ID}/{날짜}/{보고서 형식}.csv 디렉토리를 만들어 S3에 저장해두고 써야겄다. 로직을 잘게 분리해놨더니 확실히 구현은 훨씬 쉬워짐! 단일 책임의 원칙은 위대하다.

회고

데이터가 적으면 테스트가 안되고, 많으면 오래걸리고 거참 힘들다.