스토리지 S3 REST API

ListObjects

이 작업은 버킷에 있는 객체를 최대 1,000개까지 일부 또는 전부 반환합니다.

요청 예시:

GET /{fully_qualified_bucket_name} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
    x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
    x-amz-request-id: B34E94CACB2CEF6D
    Date: Mon, 17 Oct 2022 22:47:09 GMT
    <ListBucketResult>
        <Name>{fully_qualified_bucket_name}</Name>
        <Prefix></Prefix>
        <Marker></Marker>
        <Contents>
                <Key>example-object.jpg</Key>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"bf1d937a4d46a19f3basdfeg5cc8b902"</ETag>
                <Size>32347</Size>
                <Owner>
                <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                </Owner>
                <StorageClass>STANDARD</StorageClass>
        </Contents>
  </ListBucketResult>

ListObjectsV2

이 작업은 버킷에 있는 객체를 최대 1,000개까지 일부 또는 전부 반환합니다.

요청 예시:

GET /{fully_qualified_bucket_name}?list-type=2 HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
    x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
    x-amz-request-id: B34E94CACB2CEF6D
    Date: Mon, 17 Oct 2022 22:47:09 GMT
    <ListBucketResult>
        <Name>{fully_qualified_bucket_name}</Name>
        <Prefix></Prefix>
        <Marker></Marker>
        <Contents>
                <Key>example-object.jpg</Key>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"bf1d937a4d46a19f3basdfeg5cc8b902"</ETag>
                <Size>32347</Size>
                <Owner>
                <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                </Owner>
                <StorageClass>STANDARD</StorageClass>
        </Contents>
  </ListBucketResult>

GetObject (versionId 선택사항)

이 작업은 선택적 버전 ID가 제공된 버킷에서 객체를 가져옵니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?versionId={object_version_id} HTTP/1.1
Host: host
Content-MD5: request header
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Content-Length: 13432
[13432 bytes of object data]

GetObjectAcl (versionId 선택사항)

이 작업은 소유자가 객체에 대한 모든 액세스 권한을 보유하고 있음을 나타내는 긍정적 응답과 객체 소유자의 ID, DisplayName, 권한을 반환합니다. 이 작업을 위해서는 계정의 액세스 사용자 인증 정보를 제공해야 합니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?acl&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
Content-Length: 157
<AccessControlPolicy>
    <Owner>
        <ID>canonical-user-id</ID>
        <DisplayName>example-display-name</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>
            <Grantee>
        <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                <Type>CanonicalUser</Type>
            </Grantee>
            <Permission>FULL_CONTROL</Permission>
        </Grant>
</AccessControlList>
</AccessControlPolicy>

GetObjectRetention (versionId 선택사항)

이 작업은 지정된 객체의 보관 모드와 객체 잠금 보관이 만료되는 날짜를 가져옵니다. 버킷에 객체 잠금 구성이 있어야 합니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?retention&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<Retention>
    <Mode>COMPLIANCE</Mode>
    <Timestamp>2022-10-17T01:56:20.000Z</Timestamp>
</Retention>

GetObjectLegalHold (versionId 선택사항)

이 작업은 객체의 최신 법적 보관 상태를 가져옵니다. 버킷에 객체 잠금 구성이 있어야 합니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?legal-hold&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<LegalHold>
    <Status>ON</Status>
</LegalHold>

GetObjectTagging (versionId 선택사항)

이 작업은 태그 지정 하위 리소스를 사용하여 객체의 모든 태그를 반환합니다. versionId 매개변수를 지정하지 않으면 작업은 버전이 지정된 버킷에 있는 객체의 최신 버전에서 모든 태그를 반환합니다. 객체의 현재 버전이 삭제 마커인 경우 x-amz-deletemarker 응답 헤더가 true로 설정된 MethodNotAllowed 상태가 반환됩니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?tagging&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

응답 예시 (성공):

HTTP/1.1 200 OK
Date: Mon, 17 Oct 2022 22:47:09 GMT
<Tagging>
  <TagSet>
        <Tag>
        <Key>tag1</Key>
        <Value>val1</Value>
      </Tag>
      <Tag>
        <Key>tag2</Key>
        <Value>val2</Value>
      </Tag>
  </TagSet>
</Tagging>

PutObject

이 작업은 버킷에 객체를 추가합니다. 버킷에 객체를 추가하려면 버킷에 대한 올바른 쓰기 권한이 있어야 합니다.

암호화 버전 2

EV2 (암호화 버전 2) 버킷의 경우 맞춤 키가 지정되지 않으면 요청에서 암호화에 기본 AEAD 키를 사용합니다.

암호화에 맞춤 AEAD 키를 사용하려면 설정해야 하는 헤더가 두 개 있습니다.

  • x-amz-server-side-encryption: SSE-KMS - 이 요청이 맞춤 AEAD 키를 사용하려고 시도함을 나타냅니다.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} - 사용할 키를 지정합니다. 키 네임스페이스는 버킷과 동일한 프로젝트에 있어야 합니다.

요청 예시:

PUT /{fully_qualified_bucket_name}/{object_name} HTTP/1.1
Host: host
Content-MD5: request header
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 5233
Content-type: text/plain
[5233 bytes of object data]

응답 예시 (성공):

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

PutObjectTagging

이 작업은 태그 지정 하위 리소스를 사용하여 기존 객체에 태그 집합을 추가합니다.

요청 예시:

PUT /{fully_qualified_bucket_name}/{object_name}?tagging HTTP/1.1
Host: host
Content-MD5: +b9TrAB9F8ne7rJpPkqavQ==
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: {length}
Content-type: text/plain
<Tagging>
    <TagSet>
        <Tag>
            <key>my-tag-key</key>
            <value>my-tag-value</value>
        </Tag>
    </TagSet>
</Tagging>

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

DeleteObject (versionId 선택사항)

이 작업을 사용하면 하나의 요청으로 단일 버킷에서 여러 객체를 삭제할 수 있습니다. 요청에는 삭제할 키 목록이 최대 1,000개까지 포함될 수 있습니다.

요청 예시:

DELETE /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <Object>
      <Key>object_one.jpg</Key>
      <VersionId>1234568892</VersionId>
   </Object>
   <Object>
      <Key>object_two.jpg</Key>
   </Object>
</Delete>

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: 5h4FxSNCUS7wP5z92eGCWDshNpMnRuXvETa4HH3LvvH6VAIr0jU7tH9kM7X+njXx
x-amz-request-id: A437B3B641629AEE
Date: Fri, 02 Oct 2023 01:53:42 GMT
Content-Type: application/xml
Content-Length: 251
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Deleted>
        <Key>object_one.jpg</Key>
    </Deleted>
    <Error>
        <Key>object_two.jpg</Key>
        <Code>AccessDenied</Code>
        <Message>Access Denied</Message>
    </Error>
</DeleteResult>

DeleteObjects (versionId 선택사항)

버킷에서 객체를 삭제합니다. 동작은 버킷의 버전 관리 상태에 따라 달라집니다. - 버킷 버전 관리가 사용 설정되지 않은 경우 작업은 객체를 영구적으로 삭제합니다. - 버킷 버전 관리가 사용 설정된 경우 작업은 삭제 마커를 삽입하며, 이 마커가 객체의 현재 버전이 됩니다. 버전 관리가 사용 설정된 버킷에서 객체를 영구적으로 삭제하려면 요청에 객체의 versionId를 포함해야 합니다.

요청 예시:

DELETE /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 204 NoContent
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

DeleteObjectTagging (versionId 선택사항)

이 작업은 태그 지정 하위 리소스를 사용하여 객체에서 모든 태그를 삭제합니다.

요청 예시:

DELETE /{fully_qualified_bucket_name}/{object_name}?tagging&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 204 NoContent
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

HeadObject (versionId 선택사항)

HEAD 작업은 객체 자체를 반환하지 않고 객체에서 메타데이터를 가져옵니다. 이 작업은 객체의 메타데이터에만 관심이 있는 경우에 유용합니다.

요청 예시:

HEAD /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 200
x-amz-id-2: ef8yU9AS1ed4OpIszj7UDNEHGran
x-amz-request-id: 318BC8BC143432E5
x-amz-version-id: 3HL4kqtJlcpXroDTDmjVBH40Nrjfkd
Date: Wed, 28 Oct 2023 22:32:00 GMT
Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain
Connection: close

CreateMultipartUpload

이 작업은 멀티파트 업로드를 시작하고 업로드 ID를 반환합니다.

멀티파트 업로드를 사용하면 단일 객체를 파트 집합으로 추가할 수 있습니다. 각 부분은 객체 데이터의 연속된 부분입니다. 이러한 객체 부분을 독립적으로 어떤 순서로든 업로드합니다.

반환된 업로드 ID는 특정 멀티파트 업로드의 모든 파트를 연결하는 데 사용됩니다. 후속 업로드 파트 요청마다 이 업로드 ID를 지정합니다. 멀티파트 업로드 요청을 완료하거나 중단하는 최종 요청에서도 이 업로드 ID를 사용합니다.

암호화 버전 2

EV2(암호화 버전 2) 버킷에 대해 반환된 업로드 ID는 한 번만 생성됩니다. 이 작업에서 반환된 업로드 ID가 손실되면 ListMultipartUploads에서 복구할 수 없습니다. 하지만 ListMultipartUploads에서 반환된 업로드 ID는 AbortMultipartUpload 또는 ListParts에 사용할 수 있습니다. CreateMultipartUpload에서 반환된 ID만 UploadPart 또는 CompleteMultipartUpload에 사용할 수 있습니다.

요청 예시:

POST /{fully_qualified_bucket_name}/{object_name}?uploads HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
    <InitiateMultipartUploadResult>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
  </InitiateMultipartUploadResult>

ListMultipartUploads (max-uploads 선택사항)

이 작업은 버킷의 진행 중인 멀티파트 업로드를 나열합니다.

암호화 버전 2

이 작업에서 반환된 업로드 ID는 ListPartsAbortMultipartUpload에서만 작동합니다.

요청 예시:

GET /{fully_qualified_bucket_name}?uploads&max-uploads={max-uploads} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<ListMultipartUploadsResult>
<Bucket>{fully_qualified_bucket_name}</Bucket>
<KeyMarker></KeyMarker>
<UploadIdMarker></UploadIdMarker>
<NextKeyMarker>my-movie.m2ts</NextKeyMarker>
    <NextUploadIdMarker>YW55IGlkZWEgd2h5IGVsdmluZydzIHVwbG9hZCBmYWlsZWQ</NextUploadIdMarker>
    <MaxUploads>3</MaxUploads>
    <IsTruncated>true</IsTruncated>
    <Upload>
            <Key>{object_name}</Key>
            <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
            <Initiator>
            <ID>{canonical-user-id}</ID>
            <DisplayName>InitiatorDisplayName</DisplayName>
            </Initiator>
            <Owner>
            <ID>{canonical-owner-user-id}</ID>
            <DisplayName>OwnerDisplayName</DisplayName>
            </Owner>
            <StorageClass>STANDARD</StorageClass>
            <Initiated>2022-10-17T01:56:20.000Z</Initiated>
    </Upload>
</ListMultipartUploadsResult>

ListParts (max-parts 선택사항)

이 작업은 특정 멀티파트 업로드에 대해 업로드된 부분을 나열하고 기본적으로 최대 1,000개의 업로드된 부분을 반환합니다. CreateMultipartUpload 요청으로 획득한 업로드 ID를 포함해야 합니다.

암호화 버전 2

CreateMultipartUpload 또는 ListMultipartUploads에서 반환된 업로드 ID를 이 요청에 사용할 수 있습니다.

요청 예시:

GET /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&max-parts={max-parts} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<ListPartsResult>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <UploadId>{uploadId}</UploadId>
        <Initiator>
            <ID>{canonical-user-id}</ID>
            <DisplayName>InitiatorDisplayName</DisplayName>
          </Initiator>
        <Owner>
                <ID>{canonical-owner-id}</ID>
                <DisplayName>OwnerDisplayName</DisplayName>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <PartNumberMarker></PartNumberMarker>
        <NextPartNumberMarker></NextPartNumberMarker>
        <MaxParts>{max-parts}</MaxParts>
        <IsTruncated>true</IsTruncated>
        <Part>
                <PartNumber>2</PartNumber>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"7778aef8t866abc1fa1e8466f296d394"</ETag>
                <Size>10485769</Size>
        </Part>
        <Part>
                <PartNumber>3</PartNumber>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"aaab18db4cc2f85cedef854fccci24x8"</ETag>
                <Size>10423760</Size>
        </Part>
</ListPartsResult>

UploadPart

이 작업은 객체의 멀티파트 업로드에서 파트를 업로드합니다.

암호화 버전 2

EV2 (암호화 버전 2) 버킷의 경우 CreateMultipartUpload에서 반환된 ID를 사용해야 합니다. ListMutlipartUploads에서 반환된 ID는 이 요청에 사용할 수 없습니다.

요청 예시:

PUT /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&partNumber={partNumber} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 345442
Content-MD5: +b9TrAB9F8ne7rJpPkqavQ==
[part data omitted, 345442 bytes of part data]

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

AbortMultipartUpload

이 작업은 멀티파트 업로드를 중단하고 추가 부분을 업로드할 때 업로드 ID를 무효화합니다. 이전에 업로드된 파트에서 사용된 스토리지가 해제됩니다.

암호화 버전 2

EV2 (암호화 버전 2) 버킷의 경우 이 작업에 CreateMultipartUpload 또는 ListMultipartUploads에서 반환된 ID를 사용할 수 있습니다.

요청 예시:

DELETE /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

응답 예시 (성공):

HTTP/1.1 204 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

CompleteMultipartUpload

이 작업은 이전에 업로드된 부분을 조합하여 객체의 멀티파트 업로드를 완료합니다.

암호화 버전 2

EV2 (암호화 버전 2) 버킷의 경우 CreateMultipartUpload에서 반환된 ID를 사용해야 합니다. ListMutlipartUploads에서 반환된 ID는 이 요청에 사용할 수 없습니다.

암호화에 맞춤 AEAD 키를 사용하려면 설정해야 하는 헤더가 두 개 있습니다.

  • x-amz-server-side-encryption: SSE-KMS - 이 요청이 맞춤 AEAD 키를 사용하려고 시도함을 나타냅니다.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} - 사용할 키를 지정합니다. 키 네임스페이스는 버킷과 동일한 프로젝트에 있어야 합니다.

요청 예시:

POST /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 391
Content-type: text/plain
<CompleteMultipartUpload>
<Part>
    <PartNumber>1</PartNumber>
    <ETag>"a54357aff0632cce46d942af68356b38"</ETag>
</Part>
<Part>
    <PartNumber>2</PartNumber>
    <ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
</Part>
<Part>
      <PartNumber>3</PartNumber>
      <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
</Part>
</CompleteMultipartUpload>

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<CompleteMultipartUploadResult>
<Location>http://{host}/{fully_qualified_bucket_name}/{object_name}</Location>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
</CompleteMultipartUploadResult>

CopyObject

이 작업은 객체 스토리지에 이미 있는 소스 객체에서 데이터를 가져오는 특별한 유형의 PutObject입니다.

소스 버킷과 객체 키는 /로 구분된 x-amz-copy-source 헤더의 값으로 지정됩니다. 예를 들어 버킷 my_bucket에서 객체 images/my_image.jpg을 복사하려면 설정할 값은 my_bucket/images/my_image.jpg입니다.

암호화 버전 2

EV2 (암호화 버전 2) 버킷의 경우 이 소스 객체는 암호화 V2 버킷에서 가져온 것이어야 합니다. 그렇지 않으면 작업이 실패합니다.

암호화에 맞춤 AEAD 키를 사용하려면 설정해야 하는 헤더가 두 개 있습니다.

  • x-amz-server-side-encryption: SSE-KMS - 이 요청이 맞춤 AEAD 키를 사용하려고 시도함을 나타냅니다.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} - 사용할 키를 지정합니다. 키 네임스페이스는 버킷과 동일한 프로젝트에 있어야 합니다.

요청 예시:

PUT /{fully_qualified_bucket_name}/{object_name} HTTP/1.1
Host: host
X-Amz-Copy-Source: my_bucket/images/my_image.jpg
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
x-amz-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Date: Mon, 17 Oct 2022 22:47:09 GMT

<CopyObjectResult>
    <LastModified>2009-10-12T17:50:30.000Z</LastModified>
    <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyObjectResult>

UploadPartCopy

이 작업은 이미 객체 스토리지에 있는 객체를 멀티파트 업로드의 단일 파트 데이터로 사용합니다.

소스 버킷과 객체 키는 /로 구분된 x-amz-copy-source 헤더의 값으로 지정됩니다. 예를 들어 버킷 my_bucket에서 객체 images/my_image.jpg을 복사하려면 설정할 값은 my_bucket/images/my_image.jpg입니다.

암호화 버전 2

이 작업은 EV2 (암호화 버전 2) 버킷에서 지원되지 않습니다.

요청 예시:

PUT /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&partNumber={partNumber} HTTP/1.1
Host: host
X-Amz-Copy-Source: my_bucket/images/my_image.jpg
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

응답 예시 (성공):

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
x-amz-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Date: Mon, 17 Oct 2022 22:47:09 GMT

<CopyPartResult>
   <ETag>string</ETag>
   <LastModified>timestamp</LastModified>
   <ChecksumCRC32>string</ChecksumCRC32>
   <ChecksumCRC32C>string</ChecksumCRC32C>
   <ChecksumSHA1>string</ChecksumSHA1>
   <ChecksumSHA256>string</ChecksumSHA256>
</CopyPartResult>