AWS - S3 업로드 / 다운로드 ( Presigned URL , Multi-Part Upload )

TopOfTheHead·2026년 5월 11일

클라우드 / AWS

목록 보기
30/39

S3업로드 / 다운로드 방법
AWS Web Console, AWS SDK / AWS CLI, 일반 URL , Presigned URL

AWS SDK / AWS CLI
어플리케이션 개발OS를 통한 AWS 서비스 활용 시 주로 사용하는 방식
S3 버킷 권한 정책( ex. AmazonS3FullAccess )을 가진 IAM USER or Role이 필요

일반 URL
URL을 통해 다운로드를 수행
버킷PUBLIC으로 공개된 경우에만 다운로드만 가능 및 업로드는 불가능

S3에서 IAM USER를 통한 수동 업로드 / 다운로드 시 문제점

  • 업로드 / 다운로드를 수행하는 각 사용자에게 IAM User를 할당해야하는 단점 존재

    。3개의 사용자가 존재하는 경우, S3 다운로드 / 업로드를 수행하기 위한 IAM User3개를 만들어서 할당해야함.
    IAM User 갯수는 약 5000개의 제한이 존재하므로 관리가 힘듬.

  • 업로드를 수행하는 경우

    EC2 인스턴스를 경유해서 업로드를 수행해야하므로 업로드 파일EC2 인스턴스로 전송하는 트래픽EBS Volume낭비가 발생하는 단점이 존재

    이러한 단점을 해결하기 위해 EC2 인스턴스를 경유하지않고, 클라이언트에서 직접 URL / PreSigned URL을 통해 S3업로드 / 다운로드를 수행하도록 설정

PreSigned URL

AWS S3파일을 안전하게 공유( 다운로드 / 업르드 ) 시 생성자가 가진 권한을 통해 S3 내 파일에 접근 가능한 서명된 임시 URL을 생성하여 공유하는 방식

클라이언트는 미리 서명PreSignedURL을 활용하여 S3과 직접적으로 통신하면서 업로드 / 다운로드 수행
▶ 기존 EC2 인스턴스를 통해 업로드 / 다운로드를 수행 시 EC2 인스턴스 자원 낭비와 각 클라이언트에게 권한을 부여해야하는 단점을 개선

  • PreSigned URL 원리
  1. 클라이언트S3상호작용을 수행하기 위해 AWS 서버( = 생성자 )에 PreSigned URL을 요청

  2. 권한 확인EC2 인스턴스권한을 포함하는 Key를 가진 어플리케이션( = 생성자 )에서 서명PreSigned URL을 생성 및 클라이언트에게 반환

    어플리케이션KeyS3KeyKey Pair를 구성
    비대칭키 방식으로 어플리케이션 Key를 통해 PreSigned URL 서명S3Key를 통해 PreSigned URL검증

  3. 클라이언트PreSignedURL을 활용해 직접 S3요청서명 검증다운로드를 수행


    PreSigned URL의 특징
  • PreSigned URL만료기간을 지정하여 강력한 보안을 제공

  • Method ( GET : 가져오기, PUT : 업로드 )를 설정하여 S3과 상호작용이 가능

  • PreSigned URL의 경우 생성자가 지닌 권한전체 또는 일부를 가짐
    ex ) 생성자GET 권한이 없는 경우 PreSigned URL을 통해 S3GET 요청이 불가능

멀티 파트 업로드 ( Multi-Part Upload )
클라이언트에서 AWS S3에 하나의 큰 파일을 여러 파트로 분할해서 업로드하는 방식
S3분산 업로드 된 이후 다시 원본파일병합되어 저장됨

업로드 로직이 복잡한 특징이 존재.

멀티 파트 업로드 수행 시 사용자AWS S3업로드 시작업로드 완료로 총 2번 호출

단일 큰 파일업로드하는 방식보다 매우 효율적으로 업로드가 가능
▶ 보통 100MB 이상의 파일업로드멀티파트 업로드를 권장


멀티파트 업로드 원리

1. 클라이언트에서 AWS S3으로 CreateMultiPartUpload 요청을 전달하여 멀티파트 업로드 시작을 알림
。해당 요청멀티파트4개로 구성하도록 지정

2. AWS S3에서는 4개의 업로드 파트를 구성 및 각각 Upload ID를 할당

3. 클라이언트에서 해당 Upload ID를 기반으로 업로드 파트식별하여 파일분산 한 후 AWS S3으로 동시에 업로드를 시작

4. AWS S3에 각각의 업로드 파트에서 모두 업로드가 완료된 경우 클라이언트에서 AWS S3으로 CompleteMultipartUpload를 전달하여 멀티파트 업로드 완료를 알림

5. AWS S3에서 업로드파트 파일원본파일병합 및 저장


멀티파트 업로드 특징

  • 장점
    하나의 큰 파일다중으로 분산하여 업로드를 수행하므로 단일 파트 업로드에 비해 속도가 빠르다.

    오류로 인해 업로드가 종료되는 경우, 해당 부분부터 업로드 재개가 가능

  • 단점
    업로드 로직단일 파트 업로드에 비해 복잡함.

    파트 파일 업로드에서 업로드 시 지금까지 어떤 파트 파일업로드했고, 어떤 것을 업로드 해야하는지 어플리케이션에서 관리해야한다.

  • 멀티파트 업로드가 중지되거나, 업로드 이후 병합되지 않을 경우, 업로드파트 파일S3잔류추가비용 발생
    S3 Storage Lens 등의 서비스를 통해 완료되지 않은 멀티파트 업로드 파일을 확인 가능
    ▶ 실패한 멀티파트 업로드 파일의 경우 S3 수명주기규칙 작업을 설정하여 통해 자동으로 삭제처리

    S3 생명주기 설정을 통해 일정 기간이 소요된 이후 삭제 가능
    ex ) 완료되지 않은, 멀티파트 업로드의 경우 7일 후 삭제

S3 업로드 / 다운로드 구현
백엔드 : Lambda 기반
프론트엔드 : React 기반
AWS CLI / AWS Profile 활용

  • IAM UserAccess Key 생성
    IAM USER -> 보안자격증명 -> 액세스 키에서 액세스 키 생성
    기타로 체크
profile
공부기록 블로그

0개의 댓글