logo
|
Blog

    S3 Presigned URL 업로드시 PUT이냐 POST냐

    AWS는 Presigned URL을 두 가지 방식으로 제공한다.
    김보람's avatar
    김보람
    Nov 19, 2025
    S3 Presigned URL 업로드시 PUT이냐 POST냐
    Contents
    🔍 Presigned URL?🔥 중요한 포인트: Presigned URL은 두 종류다1) Presigned PUT URL2) Presigned POST URL✔ Presigned PUT 방식✔ Presigned POST 방식🧠 정리

    React Native에서 이미지를 업로드할 때, 서버를 거치지 않고 S3에 바로 올리는 구조를 자주 쓰게 된다. 이때 서버에서 내려주는 게 바로 S3 Presigned URL이다.

    백단이 제공해준 명세서만 확인하고 PUT or POST 메서드를 사용하는데 급 궁금해져서 찾아본다


    🔍 Presigned URL?

    Presigned URL은 서버가 AWS S3에 어떤 파일을 업로드할 수 있도록 서명을 포함한 임시 URL을 만들어서 보내주는 것이다.
    이 URL은 유효기간이 있고, 그 시간 동안만 접근할 수 있다.

    의미는 간단하다.

    • 서버는 파일을 직접 저장하지 않아도 된다

    • 클라이언트는 서명된 URL만 있으면 S3에 직접 업로드할 수 있다

    • 보안적으로도 괜찮고, 서버 부하도 줄어든다

    앱에서 이미지 업로드를 구현할 때 제일 많이 쓰는 방식이기도 하다.


    🔥 중요한 포인트: Presigned URL은 두 종류다

    RN에서 Presigned URL 업로드가 헷갈리는 가장 큰 이유가 바로 이거다.
    AWS는 Presigned URL을 두 가지 방식으로 제공한다.

    1) Presigned PUT URL

    2) Presigned POST URL

    두 방식은 업로드 방식부터 사용해야 할 데이터 형태가 완전히 다르다.
    이 차이를 정확히 알아야 업로드 실패를 막을 수 있다.


    ✔ Presigned PUT 방식

    PUT 방식은 서버가 URL 하나만 내려주는 형태다.

    특징은 이렇다:

    • 업로드 방식은 HTTP PUT

    • S3는 요청의 body를 “파일의 실제 바이트 내용”으로 그대로 저장한다

    • 그래서 multipart/form-data(FormData)로 보내면 안 된다

    • 파일의 순수한 바이너리 데이터를 그대로 보내야 한다

    • Content-Type 등 메타정보는 presign 생성 시와 일치해야 한다

    딱 하나만 기억해두면 된다.

    👉 PUT 방식 = 파일의 순수한 바이너리를 그대로 보내는 방식

    이 방식이 최근 서버들에서 가장 흔하게 사용하는듯


    ✔ Presigned POST 방식

    POST 방식은 PUT 방식과 달리, URL과 함께 여러 fields 값들을 내려준다.

    특징은 다음과 같다:

    • 업로드 방식은 HTTP POST

    • 업로드는 multipart/form-data, 즉 FormData 구조로 보내야 한다

    • 서버에서 내려준 fields 값이 서명에 포함되어 있기 때문에 그대로 넣어야 한다

    • 파일도 FormData 안에 넣어서 함께 전송하는 구조

    핵심은 하나다.

    👉 POST 방식 = FormData 방식 전용 구조

    PUT과는 정반대라고 보면 된다.


    🧠 정리

    간단하게 구분하면 이렇다.

    • PUT Presigned URL → 바이너리 업로드

    • POST Presigned URL → FormData 업로드

    RN에서 업로드가 실패하는 대부분의 이유가 바로
    “Presigned URL이 어떤 방식인지 모르고 잘못된 방식으로 보내는 것”이다.

    그래서 서버로부터 Presigned URL을 받을 때는 항상 다음을 확인해야 한다:

    • 이 URL이 PUT인지 POST인지

    • Content-Type을 고정해야 하는지

    • fields 값이 있는지 (POST인 경우)

    • 만료 시간은 얼마나 되는지

    이 네 가지를 알아두면 RN에서 S3 업로드 구조를 짜는 데 크게 문제가 없다.

    Share article
    Contents
    🔍 Presigned URL?🔥 중요한 포인트: Presigned URL은 두 종류다1) Presigned PUT URL2) Presigned POST URL✔ Presigned PUT 방식✔ Presigned POST 방식🧠 정리

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog