POST Object
설명
POST 작업은 HTML 양식을 사용하여 지정된 버킷에 객체를 추가합니다. POST는 버킷에 객체를 넣는 방법으로, 브라우저 기반 업로드를 지원하는 PUT의 대체 형식입니다. HTTP 헤더를 통해 PUT에 전달되는 파라미터는 대신 multipart/form-data로 인코딩된 메시지 본문의 POST에 양식 필드로 전달됩니다. 버킷에 객체를 추가하려면 버킷에 대한 WRITE 액세스 권한이 있어야 합니다. Amazon S3는 부분 객체를 저장하지 않습니다. 성공 응답을 받으면 전체 객체가 저장되었다고 확신할 수 있습니다.
Amazon S3는 분산 시스템입니다. 버킷에 대해 버전 관리를 활성화하지 않은 한, Amazon S3가 동일한 객체에 대해 여러 쓰기 요청을 동시에 수신하는 경우 작성된 객체의 마지막 버전만 저장됩니다.
데이터가 네트워크를 통과하는 동안 손상되지 않도록 하려면 Content-MD5 양식 필드를 사용합니다. 이 양식 필드를 사용하면 Amazon S3는 제공된 MD5 값을 기준으로 객체를 확인합니다. 일치하지 않으면 Amazon S3가 오류를 반환합니다. 또한 Amazon S3에 객체를 게시하는 동안 MD5 값을 계산하고 반환된 ETag를 계산된 MD5 값과 비교할 수 있습니다. ETag는 객체의 콘텐츠에 대한 변경 사항만 반영하고 메타데이터에 대한 변경을 반영하지 않습니다.
참고
요청 본문을 전송하기 전에 요청 헤더를 전송하도록 애플리케이션을 구성하려면 HTTP 상태 코드 100(계속)을 사용합니다. POST 작업의 경우 이 상태 코드를 사용하면 헤더를 기반으로 메시지가 거부되는 경우(예: 인증 실패 또는 리디렉션) 메시지 본문이 전송되지 않도록 할 수 있습니다. HTTP 상태 코드 100(계속)에 대한 자세한 내용은 http://www.ietf.org/rfc/rfc2616.txt
Amazon S3는 S3 버킷에 업로드되는 모든 새 객체를 자동으로 암호화합니다. 업로드된 객체의 암호화 설정은 대상 버킷의 기본 암호화 구성에 따라 달라집니다. 기본적으로 모든 버킷은 Amazon S3 관리형 키를 통한 서버 측 암호화(SSE-S3)를 사용하는 기본 암호화 구성을 가지고 있습니다.
대상 버킷에 AWS Key Management Service(AWS KMS) 키를 통한 서버 측 암호화(SSE-KMS), AWS KMS 키를 통한 이중 계층 서버 측 암호화(DSSE-KMS) 또는 고객 제공 암호화 키(SSE-C)를 사용하는 암호화 구성이 있는 경우, Amazon S3는 해당 KMS 키 또는 고객이 제공한 키를 사용하여 업로드된 객체를 암호화합니다. 객체를 업로드할 때 업로드된 객체의 암호화 설정을 변경하려면 서버 측 암호화 유형을 지정할 수 있습니다. SSE-S3, SSE-KMS, DSSE-KMS 또는 SSE-C를 구성할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.
중요
요청을 구성할 때 file 필드가 양식의 마지막 필드여야 합니다.
요청
구문
POST / HTTP/1.1 Host:destinationBucket.s3.amazonaws.com User-Agent:browser_dataAccept:file_typesAccept-Language:RegionsAccept-Encoding:encodingAccept-Charset:character_setKeep-Alive: 300 Connection: keep-alive Content-Type: multipart/form-data; boundary=9431149156168 Content-Length:length--9431149156168 Content-Disposition: form-data; name="key"acl--9431149156168 Content-Disposition: form-data; name="tagging" <Tagging><TagSet><Tag><Key>Tag Name</Key><Value>Tag Value</Value></Tag></TagSet></Tagging> --9431149156168 Content-Disposition: form-data; name="success_action_redirect"success_redirect--9431149156168 Content-Disposition: form-data; name="Content-Type"content_type--9431149156168 Content-Disposition: form-data; name="x-amz-meta-uuid"uuid--9431149156168 Content-Disposition: form-data; name="x-amz-meta-tag"metadata--9431149156168 Content-Disposition: form-data; name="AWSAccessKeyId"access-key-id--9431149156168 Content-Disposition: form-data; name="Policy"encoded_policy--9431149156168 Content-Disposition: form-data; name="Signature"signature= --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename.jpg" Content-Type: image/jpegfile_content--9431149156168 Content-Disposition: form-data; name="submit" Upload to Amazon S3 --9431149156168--
요청 파라미터
이 작업 구현에서는 요청 파라미터를 사용하지 않습니다.
양식 필드
이 작업은 다음 양식 필드를 사용할 수 있습니다.
| 이름 | 설명 | 필수 |
|---|---|---|
AWSAccessKeyId |
정책에 속하는 일련의 제약 조건을 충족하는 요청에 대해 익명 사용자 액세스를 허용하는 버킷 소유자의 AWS 액세스 키 ID입니다. 유형: 문자열 기본값: None 제약 조건: 요청과 함께 정책 문서가 포함되는 경우 필수입니다. |
조건부 |
acl |
지정된 Amazon S3 액세스 제어 목록(ACL)입니다. 지정된 ACL이 유효하지 않으면 오류가 생성됩니다. ACL에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 액세스 제어 목록(ACL) 개요를 참조하세요. 유형: 문자열 기본: 프라이빗 유효한 값: |
아니요 |
Cache-Control, Content-Type,
Content-Disposition, Content-Encoding,
Expires |
REST 지정 헤더입니다. 자세한 내용은 PutObject를 참조하세요. 유형: 문자열 기본값: None |
아니요 |
file |
파일 또는 텍스트 콘텐츠입니다. 파일 또는 텍스트 콘텐츠는 양식의 마지막 필드이어야 합니다. 한 번에 파일 하나만 업로드할 수 있습니다. 유형: 파일 또는 텍스트 콘텐츠 기본값: None |
예 |
key |
업로드된 키의 이름입니다. 사용자가 제공한 파일 이름을 사용하려면 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 객체 키 및 메타데이터를 참조하십시오. 유형: 문자열 기본값: None |
예 |
policy |
요청에서 허용되는 항목을 설명하는 보안 정책입니다. 보안 정책이 없는 요청은 익명으로 간주되며 공개적으로 쓰기 가능한 버킷에서만 작동합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 HTML 양식 및 업로드 예제를 참조하세요. 유형: 문자열 기본값: None 제약 조건: 버킷을 공개적으로 쓸 수 없는 경우 보안 정책이 필요합니다. |
조건부 |
success_action_redirect, redirect |
업로드 성공 시 클라이언트가 리디렉션되는 URL입니다.
Amazon S3가 URL을 해석할 수 없는 경우 필드가 없는 것처럼 작동합니다. 업로드가 실패하는 경우 Amazon S3이 오류를 표시하고 사용자는 어떤 URL로도 리디렉션되지 않습니다. 유형: 문자열 기본값: None 참고
|
아니요 |
success_action_status |
이 필드는 값
값이 설정되지 않거나 유효하지 않은 값으로 설정된 경우 Amazon S3는 상태 코드가 204인 빈 문서를 반환합니다. 유형: 문자열 기본값: None |
아니요 |
tagging |
객체에 추가할 지정된 태그 세트입니다. 태그를 추가하려면 다음 인코딩 체계를 사용합니다.
자세한 내용은 Amazon Simple Storage Service 사용 설명서의 객체 태그 지정를 참조하세요. 유형: 문자열 기본값: None |
아니요 |
x-amz-storage-class |
객체를 저장하는 데 사용할 스토리지 클래스입니다. 클래스를 지정하지 않으면 Amazon S3는 기본 스토리지 클래스 유형: 문자열 기본값: 유효한 값: |
아니요 |
x-amz-meta-* |
이 접두사로 시작하는 헤더는 사용자 정의 메타데이터입니다. 각 항목은 키-값 페어 세트로 저장되고 반환됩니다. Amazon S3는 사용자 정의 메타데이터를 검증하거나 해석하지 않습니다. 자세한 내용은 PutObject를 참조하세요. 유형: 문자열 기본값: None |
아니요 |
x-amz-security-token |
Amazon DevPay 보안 토큰입니다. Amazon DevPay를 사용하는 각 요청에는 제품 토큰과 사용자 토큰에 하나씩 2개의 유형: 문자열 기본값: None |
아니요 |
x-amz-signature |
(AWS 서명 버전 4) 보안 정책의 HMAC-SHA256 해시입니다. 유형: 문자열 기본값: None |
조건부 |
x-amz-website-redirect-location
|
버킷이 웹 사이트로 구성된 경우 이 필드는 이 객체에 대한 요청을 동일 버킷의 다른 객체로 혹은 외부 URL로 리디렉션합니다. Amazon S3는 객체 메타데이터에 이 헤더의 값을 저장합니다. 객체 메타데이터에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 객체 키 및 메타데이터를 참조하세요. 다음 예제에서 요청 헤더는 리디렉션을 동일 버킷의 객체(
다음 예제에서 요청 헤더는 객체 리디렉션을 다른 웹 사이트로 설정합니다.
Amazon S3에서 웹 사이트 호스팅에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3에서 웹 사이트 호스팅 및 웹 사이트 페이지 리디렉션을 구성하는 방법을 참조하세요. 유형: 문자열 기본값: None 제약 조건: 값에는 |
아니요 |
추가 체크섬 요청 양식 필드
객체를 업로드할 때 데이터 무결성을 확인하는 데 사용할 다양한 체크섬을 지정할 수 있습니다. Amazon S3가 사용할 체크섬 알고리즘을 하나 더 지정할 수 있습니다. 추가 체크섬 값에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 객체 무결성 확인을 참조하세요.
| 이름 | 설명 | 필수 |
|---|---|---|
x-amz-checksum-algorithm
|
객체의 체크섬을 생성하는 데 사용된 알고리즘을 나타냅니다. 값을 지정한 경우 일치하는 체크섬 헤더를 포함해야 합니다. 그렇지 않으면 요청에 400 오류가 발생합니다. 가능한 값은 |
아니요 |
x-amz-checksum-crc32
|
객체의 Base64로 인코딩된 32비트 CRC32 체크섬을 지정합니다. 이 파라미터는 |
조건부 |
x-amz-checksum-crc32c
|
객체의 Base64로 인코딩된 32비트 CRC32C 체크섬을 지정합니다. 이 파라미터는 |
조건부 |
x-amz-checksum-sha1
|
객체의 Base64로 인코딩된 160비트 SHA-1 다이제스트를 지정합니다. 이 파라미터는 |
조건부 |
x-amz-checksum-sha256
|
객체의 Base64로 인코딩된 256비트 SHA-256 다이제스트를 지정합니다. 이 파라미터는 |
조건부 |
서버 측 암호화 관련 요청 양식 필드
서버 측 암호화는 저장 데이터 암호화입니다. Amazon S3가 AWS 데이터 센터의 디스크에 데이터를 쓸 때 암호화하고 사용자가 해당 데이터에 액세스할 때 복호화합니다. 객체를 업로드할 때 해당 객체를 암호화하는 데 Amazon S3에서 사용할 서버 측 암호화 유형을 지정할 수 있습니다.
서버 측 암호화에는 네 가지 유형이 있습니다.
-
Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) - 2022년 5월부터 모든 Amazon S3 버킷에는 기본적으로 암호화가 구성됩니다. 서버 측 암호화의 기본 옵션은 SSE-S3를 사용하는 것입니다. 각 객체가 고유한 키로 암호화됩니다. 또한 추가 보안 조치로 SSE-S3는 주기적으로 교체되는 루트 키를 사용하여 키 자체를 암호화합니다. SSE-S3는 가장 강력한 블록 암호 중 하나인 256비트 Advanced Encryption Standard(AES-256)를 사용하여 데이터를 암호화합니다.
-
AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) - SSE-KMS는 Amazon S3와 AWS KMS 서비스를 통합하여 제공됩니다. AWS KMS를 사용하면 키에 대한 제어 기능이 더 많아집니다. 예를 들어, 개별 키를 보고, 제어 정책을 편집하고, AWS CloudTrail에서 키를 팔로우할 수 있습니다. 또한 고객 관리형 키를 생성하고 관리하거나 사용자, 서비스 및 리전에 고유한 AWS 관리형 키를 사용할 수 있습니다.
-
AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) - AWS KMS keys를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)는 SSE-KMS와 비슷하지만, 한 계층이 아니라 두 계층의 객체 수준 암호화를 적용합니다.
-
고객 제공 키를 사용한 서버 측 암호화(SSE-C) - SSE-C를 사용하면 사용자는 암호화 키를 관리하고 Amazon S3는 암호화(디스크에 쓸 때) 및 복호화(사용자가 객체에 액세스할 때)를 관리합니다.
참고
범용 버킷에 대해 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 차단한 경우 버킷에 새 데이터를 쓰는 동안 SSE-C 요청 헤더를 지정하면 HTTP 403 액세스 거부됨 오류가 발생합니다. 자세한 내용은 범용 버킷에 대한 SSE-C 차단 또는 차단 해제를 참조하세요.
자세한 내용은 Amazon Simple Storage Service 사용 설명서의 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.
사용할 서버 측 암호화 유형에 따라 다음 양식 필드를 지정합니다.
-
SSE-S3, SSE-KMS 또는 DSSE-KMS 사용 – 이러한 유형의 서버 측 암호화를 사용하려면 요청에 다음 양식 필드를 지정합니다.
이름 설명 필수 x-amz-server-side-encryptionAmazon S3가 객체를 생성할 때 사용할 서버 측 암호화 알고리즘을 지정합니다. SSE-S3를 사용하려면
AES256을 지정합니다. SSE-KMS를 사용하려면aws:kms를 지정합니다. DSSE-KMS를 사용하려면aws:kms:dsse를 지정합니다.유형: 문자열
유효한 값:
aws:kms,AES256,aws:kms:dsse예 x-amz-server-side-encryption-aws-kms-key-idx-amz-server-side-encryption헤더의 값인aws:kms또는aws:kms:dsse인 경우 이 헤더는 객체를 암호화하는 데 사용된 AWS KMS key의 ID를 지정합니다.유형: 문자열
x-amz-server-side-encryption의 값이aws:kms또는aws:kms:dsse인 경우, 예x-amz-server-side-encryption-contextx-amz-server-side-encryption의 값이aws:kms또는aws:kms:dsse인 경우 이 헤더는 객체에 대한 암호화 컨텍스트를 지정합니다. 이 헤더의 값은 암호화 컨텍스트의 JSON 형식 키-값 페어를 포함하는 Base64로 인코딩된 UTF-8 문자열입니다.유형: 문자열
아니요 x-amz-server-side-encryption-bucket-key-enabledx-amz-server-side-encryption의 값이aws:kms또는aws:kms:dsse인 경우 이 헤더는 Amazon S3가 SSE-KMS 또는 DSSE-KMS와 함께 S3 버킷 키를 사용해야 하는지 여부를 지정합니다. 이 헤더를true로 설정하면 Amazon S3가 SSE-KMS 또는 DSSE-KMS를 사용한 객체 암호화에 S3 버킷 키를 사용합니다.유형: Boolean
아니요 참고
x-amz-server-side-encryption:aws:kms또는x-amz-server-side-encryption:aws:kms:dsse를 지정하지만x-amz-server-side-encryption-aws-kms-key-id를 제공하지 않는 경우 Amazon S3는 AWS 관리형 키(aws/S3)를 사용하여 데이터를 보호합니다. -
SSE-C 사용 – 자체 암호화 키를 관리하려는 경우 요청에 다음 양식 필드를 모두 제공해야 합니다.
참고
SSE-C를 사용하는 경우 Amazon S3가 응답에서 반환하는
ETag값은 객체의 MD5가 아닙니다.이름 설명 필수 x-amz-server-side-encryption-customer-algorithm객체를 암호화할 때 사용할 알고리즘을 지정합니다.
유형: 문자열
기본값: None
유효한 값:
AES256제약 조건: 유효한
x-amz-server-side-encryption-customer-key및x-amz-server-side-encryption-customer-key-MD5필드를 포함해야 합니다.예 x-amz-server-side-encryption-customer-keyAmazon S3가 데이터 암호화에 사용할 Base64로 인코딩된 고객 제공 암호화 키를 지정합니다. 이 값은 객체를 저장하는 데 사용된 다음 폐기됩니다. Amazon은 암호화 키를 저장하지 않습니다. 키는
x-amz-server-side-encryption-customer-algorithm헤더에 지정된 알고리즘과 함께 사용하기에 적합해야 합니다.유형: 문자열
기본값: None
제약 조건: 유효한
x-amz-server-side-encryption-customer-algorithm및x-amz-server-side-encryption-customer-key-MD5필드를 포함해야 합니다.예 x-amz-server-side-encryption-customer-key-MD5RFC 1321
에 따라 암호화 키의 Base64로 인코딩된 128비트 MD5 다이제스트를 지정합니다. Amazon S3는 메시지 무결성 검사에 이 헤더를 사용하여 암호화 키가 오류 없이 전송되었음을 확인합니다. 유형: 문자열
기본값: None
제약 조건: 유효한
x-amz-server-side-encryption-customer-algorithm및x-amz-server-side-encryption-customer-key필드를 포함해야 합니다.예
응답
응답 헤더
이 작업의 구현에는 모든 응답에 공통되는 응답 헤더 외에 다음 응답 헤더가 포함될 수 있습니다. 자세한 내용은 공통 응답 헤더를 참조하세요.
| 이름 | 설명 |
|---|---|
x-amz-checksum-crc32
|
객체의 Base64로 인코딩된 32비트 CRC32 체크섬입니다. 유형: 문자열 |
x-amz-checksum-crc32c
|
객체의 Base64로 인코딩된 32비트 CRC32C 체크섬입니다. 유형: 문자열 |
x-amz-checksum-sha1
|
객체의 Base64로 인코딩된 160비트 SHA-1 다이제스트입니다. 유형: 문자열 |
x-amz-checksum-sha256
|
객체의 Base64로 인코딩된 256비트 SHA-256 다이제스트입니다. 유형: 문자열 |
x-amz-expiration
|
버킷의 수명 주기 구성에서 객체에 대해 유형: 문자열 |
success_action_redirect, redirect
|
업로드 성공 시 클라이언트가 리디렉션되는 URL입니다. 유형: 문자열 상위 항목: PostResponse |
x-amz-server-side-encryption
|
Amazon S3에 이 객체를 저장할 때 사용된 서버 측 암호화 알고리즘입니다(예: 유형: 문자열 |
x-amz-server-side-encryption-aws-kms-key-id
|
유형: 문자열 |
x-amz-server-side-encryption-bucket-key-enabled
|
유형: Boolean |
x-amz-server-side-encryption-customer-algorithm
|
SSE-C가 요청된 경우 응답에는 사용된 암호화 알고리즘을 확인하는 이 헤더가 포함됩니다. 타입: 문자열 유효 값: |
x-amz-server-side-encryption-customer-key-MD5
|
SSE-C가 요청된 경우 응답에는 고객 제공 암호화 키의 왕복 메시지 무결성을 확인하기 위한 이 헤더가 포함됩니다. 유형: 문자열 |
x-amz-version-id |
객체의 버전입니다. 유형: 문자열 |
응답 요소
| 이름 | 설명 |
|---|---|
Bucket
|
객체가 저장되어 있는 버킷의 이름입니다. 유형: 문자열 상위 항목: PostResponse |
ETag
|
엔터티 태그(ETag)는 유형: 문자열 상위 항목: PostResponse |
Key
|
객체 키 이름입니다. 유형: 문자열 상위 항목: PostResponse |
Location
|
객체의 URI입니다. 유형: 문자열 상위 항목: PostResponse |
특수 오류
이 작업의 구현은 특수 오류를 반환하지 않습니다. 일반적인 Amazon S3 오류에 대한 자세한 내용 및 오류 코드 목록은 오류 응답을 참조하세요.
예
예 요청
POST /Neo HTTP/1.1 Content-Length: 4 Host: quotes.s3.amazonaws.com Date: Wed, 01 Mar 2006 12:00:00 GMT Authorization:authorization stringContent-Type: text/plain Expect: the 100-continue HTTP status codeObjectContent
버전 관리가 일시 중지된 샘플 응답
다음은 버킷 버전 관리가 일시 중지된 경우의 샘플 응답입니다.
HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: default Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "1b2cf535f27731c974343645a3985328" Content-Length: 0 Connection: close Server: AmazonS3
이 응답에서 버전 ID는 null입니다.
버전 관리가 활성화된 샘플 응답
다음은 버킷 버전 관리가 활성화된 경우의 샘플 응답입니다.
HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: 43jfkodU8493jnFJD9fjj3HHNVfdsQUIFDNsidf038jfdsjGFDSIRp Date: Wed, 01 Mar 2006 12:00:00 GMT ETag: "828ef3fdfa96f00ad9f27c383fc9ac7f" Content-Length: 0 Connection: close Server: AmazonS3