pre-signed url 이 0 Unknown error를 반환할 때

2024년 12월 13일 금요일

Today I Learned

날짜

2024년 12월 13일 금요일

내용

pre-signed url이 작동하지 않는 이유

현재 티켓페이지에서 사용자가 추가한 이미지와 파일을 저장하는 방식은 그다지 좋지 않다.

  1. 서버에게 티켓의 이미지와 파일을 S3에 저장해달라고 요청을 보냄
  2. 서버는 저장 후 그 링크를 반환함
  3. 반환받은 링크를 티켓 데이터에 추가하여 티켓 데이터 생성 요청을 보냄

이 방식이다.

만약 클라이언트가 S3에 저장할 수 있다면 굳이 서버에게 파일을 보내지 않아도 된다. 이를 위해 pre-signed-url을 보내도록만 요청을 변경해야 한다. 이 URL은 설정한 시간만큼만 유효한 URL이다. 서버에게 어떤 버킷 내 어떤 키에 생성해야 할지 알려주고 url을 받아왔으나 생성이 되지 않는다. 클라이언트의 요청에 0 Unknown Error만 나와 정확한 원인도 모른다… 구글링을 한참 해보니 pre-signed url을 생성하기 위해 boto3 클라이언트를 초기화할 때 리전을 입력해보라고 한다.

1
2
3
4
5
# 기존
s3 = boto3.client("s3")

# 개선
s3 = boto3.client("s3", region_name=REGION)

이랬더니 진짜 보내진다! 애초에 사용 못할 url이었으면 보내질 말던가!

회고

어쨌든 성공함 티켓페이지 개선 끝.