TIL/BackEnd

[BE] 이미지 업로드, 다운로드 시의 고민 (feat. preSigned URL)

JoJobum 2022. 7. 26.

이미지나 동영상을 업로드하고 다운로드하는 경우가 많음

이러한 작업을 서버단에서 처리해줄 때 

EC2에 띄워져 있는 서버에 이미지를 받아서 이를 S3에 저장하는 방법이 있을 것이고

유저가 바로 S3에 이미지를 업로드하고 받아오는 방법이 있을 것이다.

 

그냥 바로 성능적인면을 보면 상식적으로 생각하면 두번 이동해야하는 방법보다 한번에 바로 업로드하는 방법이 효율적일 것이다. 또한 서버가 이미지가 들어오는 트래픽을 처리해야 하는 점에서 서버에 부하가 걸리는 것까지 비용이 될 것이다.

 

그렇다면 바로 S3에 저장하는 것이 무조건 옳은 것인가?? 라고 하면 걱정이 되는 부분은 보안이다.

S3에 접근하기 위해 AWS 관련된 키라던지 보안적으로 위험한 요소를 클라이언트 쪽이 들고 있게 될 것이다.

 

이러한 점을 보완하기에 나온 것이 preSigned URL 이다

접근 권한을 인증해야 S3 버킷에 접근하여 업로드를 할 수 있는데, 

인증을 하면 받는 S3에 업로드 할 수 있는 url 이다.

 

  1. 클라이언트가 서버에 업로드 하겠다는 요청 보내면 
  2. 서버가 이를 처리하면서 S3에 대한 접근 권한을 인증한다
  3. S3는 S3에 업로드 할 수 있는 URL을 발급해준다 (preSigned URL)
  4. 서버는 클라이언트에게 preSigned URL을 던져준다
  5. 클라이언트가 preSigned URL을 통해 직접 업로드한다
  6. 클라이언트가 서버에게 업로드 완료를 알림

의 과정으로 업로드를 완료하게 된다

반응형

댓글