[AWS] pre-signed URL 사용하여 S3 업로드

김맥스·2024년 6월 25일

데브옵스

목록 보기
8/8
post-thumbnail

서버를 거쳐 s3에 이미지를 업로드하는 방식

기존에 알았던 s3에 이미지를 업로드하던 방식은, 클라이언트에서 서버api를 호출하여 파일 객체를 서버로 전송하여 서버에서 버킷에 업로드하는 방식이었다. 이 방식의 문제점이 있다는 것을 배우게 되었고, 간략히 정리해보자면 아래와 같다.

문제점

  1. 서버 부하 증가
    파일 객체가 서버를 거쳐가기 때문에 서버 네트워크 대역폭과 CPU 자원이 더 많이 소모된다. 서버가 많은 요청을 처리해야 하는 경우 병목현상을 일으킬 수 있다.
  2. 응답 시간 증가
    '클라 -> 서버 -> 버킷' 경로 이기 때문에, 클라이언트가 완료 응답을 받을 때까지의 시간이 서버가 없을 경우보다 더 걸린다.
  3. 비용 증가
    서버의 네트워크 대역폭을 많이 사용할수록 추가 비용이 발생할 수 있다.
  4. 로직 복잡성 증가
    서버에서 파일을 받아서 S3에 업로드 하는 로직이 구현되어야 하므로 이에 대한 추가 개발과 유지보수 및 디버깅에 더 많은 시간과 노력이 필요할 수 있다.

이러한 문제점들을 개선하기 위해 사용되는 방식이 pre-signed URL이다.

pre-signed URL

aws

개념

'미리 서명된 url'이라는 뜻으로, 말 그대로 어떤 서명이 된 url을 사용함으로써 AWS 보안 자격 증명이나 권한이 없어도 S3 버킷에 객체를 업로드 하는 것을 가능하게 한 기술이다.

장점

  1. 서버 부하 감소
    파일이 서버를 거치지 않고 클라이언트에서 바로 S3로 업로드 되기 때문에 서버의 부하가 줄어든다.
  2. 응답 시간 단축
    클라가 S3에 직업 업로드하기 때문에 업로드 속도가 빨라지고 응답시간이 단축된다.
  3. 비용 절감
    서버의 네트워크 대역폭 사용이 줄어들어 비용이 절감된다
  4. 로직 단순화
    이 업로드 과정에 관한 로직이 단순해지고, 서버에서는 pre-signed URL을 생성하는 작업만 하면 된다.
  5. 유효기간 설정
    생성시 설정된 유효기간동안만 pre-signed URL 사용이 가능하기 때문에, 유출되더라도 유효기간이 지나면 사용할 수 없게 된다. 또한, 특정작업(업로드, 다운로드)에 대해서만 권한을 부여할 수 있기 때문에 이런한 점들로 인해 불필요한 권한 남용을 방지 할 수 있다.
profile
3년차 백엔드 개발자의 공부 기록

0개의 댓글