지도/코스 썸네일 이미지 등록 기능을 구현하기 위해,
NCP Object Storage 에 이미지를 업로드하고, 해당 URL을 DB에 저장하기로 했다.
먼저, 프론트엔드에서 이미지를 스토리지에 직접 업로드 하는 방법은
버킷 권한에 접근이 필요하기 때문에 보안상 배제하였다.
두 번째로 프론트엔드에서 이미지를 multipart로 백엔드 서버에 전송하고,
그 데이터를 다시 버킷에 업로드 하는 방법의 장점과 단점은 다음과 같다.
장점
- 백엔드에서 업로드 전후에 비즈니스 로직 처리 가능
단점
- 이중 전송 과정에서 네트워크 전송 비용이 증가
- 백엔드 서버의 부하 증가 / 성능 저하
그래서 아래 방법을 시도해 보았다.
Pre-signed URL
을 발급해 사용하는 방법해당 URL 에 PUT 요청으로 이미지를 업로드하는 방법이다.
응답. uploadedUrl 은 이미지를 조회 가능한 url 이며, 응답에 임의로 추가
NCP에서 제공하는 서비스임에도 aws의 S3 sdk를 사용했는데,
getSignedUrl
에서는 파일 크기 제한을 지원하지 않았다.
그래서 찾아낸 것이 아래의 방법이다.
Pre-signed Post
를 이용하는 방법