Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사

Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사 (Uploading and copying objects using multipart upload in Amazon S3)

멀티파트 업로드(multipart upload)를 사용하면 단일 객체를 여러 부분(part)으로 나눠 Amazon S3에 업로드할 수 있어요. 각 부분은 객체 데이터의 연속적인 일부예요. 이 객체 부분들은 서로 독립적으로, 어떤 순서로든 업로드할 수 있어요. 업로드할 때 업데이트된 AWS 클라이언트가 객체의 체크섬을 자동으로 계산하고 요청의 일부로 객체 크기와 함께 Amazon S3에 보내요. 일부 부분의 전송이 실패하면 다른 부분에 영향을 주지 않고 해당 부분만 다시 전송할 수 있어요. 객체의 모든 부분을 업로드한 후 Amazon S3가 이 부분들을 조합해 객체를 만들어요. 100MB 이상의 객체는 단일 작업으로 업로드하는 대신 멀티파트 업로드를 사용하는 것이 모범 사례예요.

출처: 문서

본문

멀티파트 업로드를 사용하면 다음과 같은 이점이 있어요.

  • 처리량 향상 – 부분을 병렬로 업로드해 처리량을 높일 수 있어요.
  • 네트워크 문제에서 빠른 복구 – 부분 크기가 작을수록 네트워크 오류로 실패한 업로드를 다시 시작할 때의 영향을 최소화해요.
  • 객체 업로드 일시 중지 및 재개 – 시간을 두고 객체 부분을 업로드할 수 있어요. 멀티파트 업로드를 시작한 후에는 만료가 없어요. 반드시 멀티파트 업로드를 명시적으로 완료하거나 중지해야 해요.
  • 최종 객체 크기를 알기 전에 업로드 시작 – 객체를 만들면서 업로드할 수 있어요.

다음과 같은 방식으로 멀티파트 업로드를 사용할 것을 권장해요.

  • 안정적인 고대역폭 네트워크에서 대형 객체를 업로드한다면, 멀티파트 업로드를 사용해 객체 부분을 병렬로 업로드해 멀티스레드 성능으로 가용 대역폭을 최대한 활용하세요.
  • 불안정한 네트워크에서 업로드한다면, 멀티파트 업로드를 사용해 업로드 다시 시작을 피함으로써 네트워크 오류에 대한 복원력을 높이세요. 멀티파트 업로드를 사용하면 업로드 중 중단된 부분만 다시 시도하면 돼요. 객체를 처음부터 다시 업로드할 필요가 없어요.

참고 디렉터리 버킷과 함께 Amazon S3 Express One Zone 스토리지 클래스를 사용하는 방법에 대한 자세한 내용은 S3 Express One Zone 및 디렉터리 버킷 작업을 참고하세요. S3 Express One Zone 및 디렉터리 버킷에서 멀티파트 업로드를 사용하는 방법에 대한 자세한 내용은 디렉터리 버킷에서 멀티파트 업로드 사용을 참고하세요.

멀티파트 업로드 프로세스 (Multipart upload process)

멀티파트 업로드는 3단계 프로세스예요. 업로드를 시작하고, 객체 부분을 업로드하고, 모든 부분을 업로드한 후에 멀티파트 업로드를 완료해요. 멀티파트 업로드 완료 요청을 수신하면 Amazon S3는 업로드된 부분에서 객체를 구성하며, 버킷의 다른 객체와 동일하게 객체에 접근할 수 있어요.

진행 중인 모든 멀티파트 업로드를 나열하거나, 특정 멀티파트 업로드에 대해 업로드한 부분 목록을 가져올 수 있어요. 이 절에서 각 작업을 설명할게요.

멀티파트 업로드 시작 (Multipart upload initiation)

멀티파트 업로드를 시작하는 요청을 보낼 때는 체크섬 유형을 지정해야 해요. 그러면 Amazon S3가 멀티파트 업로드의 고유 식별자인 업로드 ID가 포함된 응답을 반환해요. 이 업로드 ID는 부분을 업로드하거나, 부분을 나열하거나, 업로드를 완료하거나, 업로드를 중지할 때 필요해요. 업로드 중인 객체를 설명하는 메타데이터를 제공하려면 멀티파트 업로드를 시작하는 요청에서 이를 제공해야 해요. 익명 사용자는 멀티파트 업로드를 시작할 수 없어요.

부분 업로드 (Parts upload)

부분을 업로드할 때는 업로드 ID 외에 부분 번호도 지정해야 해요. 1에서 10,000 사이의 부분 번호를 선택할 수 있어요. 부분 번호는 업로드 중인 객체에서 부분과 그 위치를 고유하게 식별해요. 선택한 부분 번호는 연속적이지 않아도 돼요(예: 1, 5, 14가 될 수 있음). 이전에 업로드한 부분과 같은 부분 번호로 새 부분을 업로드하면 이전 부분이 덮어써진다는 점을 알아 두세요.

부분을 업로드하면 Amazon S3는 응답의 헤더로 각 부분의 체크섬 값과 함께 체크섬 알고리즘 유형을 반환해요. 각 부분 업로드에 대해 부분 번호와 ETag 값을 기록해야 해요. 이 값들은 멀티파트 업로드를 완료하는 후속 요청에 포함해야 해요. 각 부분은 업로드 시점에 고유한 ETag를 갖게 돼요. 다만 멀티파트 업로드가 완료되고 모든 부분이 통합되면 모든 부분은 체크섬들의 체크섬(checksum of checksums)으로서 하나의 ETag에 속하게 돼요.

중요 멀티파트 업로드를 시작하고 하나 이상의 부분을 업로드한 후에는 업로드된 부분의 스토리지 요금 발생을 중지하려면 멀티파트 업로드를 완료하거나 중지해야 해요. 멀티파트 업로드를 완료하거나 중지한 후에만 Amazon S3가 부분 스토리지를 해제하고 부분 스토리지에 대한 요금 청구를 중지해요.

멀티파트 업로드를 중지한 후에는 해당 업로드 ID로 다시 부분을 업로드할 수 없어요. 부분 업로드가 진행 중이었다면 업로드를 중지한 후에도 성공하거나 실패할 수 있어요. 모든 부분이 소비한 스토리지를 모두 해제하려면 모든 부분 업로드가 완료된 후에만 멀티파트 업로드를 중지해야 해요.

멀티파트 업로드 완료 (Multipart upload completion)

멀티파트 업로드를 완료하면 Amazon S3는 부분 번호를 기준으로 오름차순으로 부분을 연결해 객체를 만들어요. 멀티파트 업로드 시작 요청에서 객체 메타데이터가 제공됐다면 Amazon S3는 해당 메타데이터를 객체와 연결해요. 완료 요청이 성공하면 부분은 더 이상 존재하지 않아요.

멀티파트 업로드 완료 요청에는 업로드 ID와 부분 번호 및 해당 ETag 값 목록이 포함되어야 해요. Amazon S3 응답에는 결합된 객체 데이터를 고유하게 식별하는 ETag가 포함돼요. 이 ETag는 객체 데이터의 MD5 해시가 아닐 수 있어요.

멀티파트 업로드 중 전체 객체 체크섬을 제공하면 AWS SDK가 체크섬을 Amazon S3에 전달하고, S3는 서버 측에서 객체 무결성을 검증해 수신된 값과 비교해요. 값이 일치하면 S3는 객체를 저장해요. 두 값이 일치하지 않으면 Amazon S3는 BadDigest 오류로 요청을 실패시켜요. 객체의 체크섬은 나중에 객체 데이터 무결성을 검증하는 데 사용할 객체 메타데이터에도 저장돼요.

샘플 멀티파트 업로드 호출 (Sample multipart upload calls)

이 예시에서는 100GB 파일에 대한 멀티파트 업로드를 생성한다고 가정할게요. 이 경우 전체 프로세스에 대해 다음 API 호출이 발생해요. 총 1,002개의 API 호출이 있었을 거예요.

  • 프로세스를 시작하는 CreateMultipartUpload 호출.
  • 각각 100MB의 부분을 업로드하는 1,000개의 개별 UploadPart 호출(총 크기 100GB).
  • 프로세스를 완료하는 CompleteMultipartUpload 호출.

멀티파트 업로드 나열 (Multipart upload listings)

특정 멀티파트 업로드의 부분 또는 모든 진행 중인 멀티파트 업로드를 나열할 수 있어요. 부분 나열 작업은 특정 멀티파트 업로드에 대해 업로드한 부분 정보를 반환해요. 각 부분 나열 요청에 대해 Amazon S3는 지정된 멀티파트 업로드의 부분 정보를 최대 1,000개까지 반환해요. 멀티파트 업로드에 부분이 1,000개보다 많으면 모든 부분을 검색하려면 일련의 부분 나열 요청을 보내야 해요. 반환된 부분 목록에는 아직 업로드가 끝나지 않은 부분은 포함되지 않는다는 점에 유의하세요. 멀티파트 업로드 나열 작업을 사용하면 진행 중인 멀티파트 업로드 목록을 얻을 수 있어요.

진행 중인 멀티파트 업로드는 시작했지만 아직 완료하거나 중지하지 않은 업로드예요. 각 요청은 최대 1,000개의 멀티파트 업로드를 반환해요. 진행 중인 멀티파트 업로드가 1,000개보다 많으면 나머지 멀티파트 업로드를 검색하려면 추가 요청을 보내야 해요. 반환된 목록은 검증 용도로만 사용하세요.

중요 멀티파트 업로드 완료 요청을 보낼 때 이 목록 결과를 사용하지 마세요. 대신 부분을 업로드할 때 지정한 부분 번호와 Amazon S3가 반환한 해당 ETag 값의 자체 목록을 유지하세요.

멀티파트 업로드 작업에서의 체크섬 (Checksums with multipart upload operations)

객체를 Amazon S3에 업로드할 때 Amazon S3가 사용할 체크섬 알고리즘을 지정할 수 있어요. 기본적으로 AWS SDK와 S3 콘솔은 모든 객체 업로드에 알고리즘을 사용하며, 이를 재정의할 수 있어요. 이전 SDK를 사용 중이고 업로드한 객체에 지정된 체크섬이 없다면 Amazon S3는 자동으로 CRC-64/NVME(CRC64NVME) 체크섬 알고리즘을 사용해요. (이것은 효율적인 데이터 무결성 검증을 위한 권장 옵션이기도 해요.) CRC-64/NVME를 사용하면 Amazon S3는 멀티파트 또는 단일 부분 업로드가 완료된 후 전체 객체의 체크섬을 계산해요. CRC-64/NVME 체크섬 알고리즘은 전체 객체의 직접 체크섬 또는 각 개별 부분에 대한 체크섬들의 체크섬을 계산하는 데 사용돼요.

멀티파트 업로드로 객체를 S3에 업로드한 후 Amazon S3는 각 부분 또는 전체 객체에 대한 체크섬 값을 계산해 저장해요. S3 API 또는 AWS SDK를 사용해 다음 방식으로 체크섬 값을 검색할 수 있어요.

  • 개별 부분의 경우 GetObject 또는 HeadObject를 사용할 수 있어요. 멀티파트 업로드가 아직 진행 중일 때 개별 부분의 체크섬 값을 검색하려면 ListParts를 사용할 수 있어요.
  • 전체 객체의 경우 PutObject를 사용할 수 있어요. 전체 객체 체크섬으로 멀티파트 업로드를 수행하려면 전체 객체 체크섬 유형을 지정해 CreateMultipartUpload 및 CompleteMultipartUpload를 사용해요. 전체 객체의 체크섬 값을 검증하거나 멀티파트 업로드에서 사용 중인 체크섬 유형을 확인하려면 ListParts를 사용해요.

중요 **체크섬(Checksums)**과 함께 멀티파트 업로드를 사용하는 경우, 각 부분 업로드(멀티파트 업로드 내)의 부분 번호는 연속적이어야 하고 1로 시작해야 해요. 체크섬(Checksums) 사용 시 연속되지 않은 부분 번호로 멀티파트 업로드 완료 요청을 완료하려 하면 Amazon S3는 HTTP 500 Internal Server 오류를 생성해요.

체크섬이 멀티파트 업로드 객체에서 어떻게 작동하는지에 대한 자세한 내용은 Amazon S3에서 객체 무결성 확인을 참고하세요.

추가 체크섬과 함께 멀티파트 업로드로 객체를 업로드하는 방법을 보여주는 종단 간 절차는 멀티파트 업로드로 객체 업로드 및 데이터 무결성 확인 튜토리얼을 참고하세요.

동시 멀티파트 업로드 작업 (Concurrent multipart upload operations)

분산 개발 환경에서는 애플리케이션이 같은 객체에 대해 동시에 여러 업데이트를 시작할 수 있어요. 애플리케이션이 같은 객체 키를 사용해 여러 멀티파트 업로드를 시작할 수 있어요. 각 업로드에 대해 애플리케이션은 부분을 업로드하고 객체를 만들기 위해 완료 업로드 요청을 Amazon S3에 보낼 수 있어요. 버킷에서 S3 버전 관리가 활성화되면 멀티파트 업로드를 완료하면 항상 새 버전이 만들어져요. 버전 관리가 활성화된 버킷에서 같은 객체 키를 사용하는 여러 멀티파트 업로드를 시작하면 객체의 현재 버전은 가장 최근에 시작된 업로드(createdDate)에 의해 결정돼요.

예를 들어 오전 10:00에 객체에 대한 CreateMultipartUpload 요청을 시작했다고 해 볼게요. 그런 다음 오전 11:00에 같은 객체에 대한 두 번째 CreateMultipartUpload 요청을 제출해요. 두 번째 요청이 가장 최근에 제출됐으므로, 첫 번째 업로드가 두 번째보다 나중에 완료되더라도 11:00 요청이 업로드한 객체가 현재 버전이 돼요. 버전 관리가 활성화되지 않은 버킷의 경우, 멀티파트 업로드가 시작된 시점과 완료되는 시점 사이에 수신된 다른 요청이 우선할 수 있어요.

동시 멀티파트 업로드 요청이 우선할 수 있는 또 다른 예는, 해당 키로 멀티파트 업로드를 시작한 후 다른 작업이 키를 삭제하는 경우예요. 작업을 완료하기 전에 완료 멀티파트 업로드 응답이 객체를 결코 보지 못했음에도 성공적인 객체 생성을 나타낼 수 있어요.

멀티파트 업로드 중 동일한 키 이름을 가진 객체 업로드 방지 (Prevent uploading objects with identical key names during multipart upload)

업로드 작업에 조건부 쓰기(conditional write)를 사용해 객체를 만들기 전에 버킷에 객체가 이미 존재하는지 확인할 수 있어요. 이렇게 하면 기존 데이터가 덮어써지는 것을 방지할 수 있어요. 조건부 쓰기는 업로드하는 동안 버킷에 같은 키 이름의 기존 객체가 없는지 검증해요.

PutObject 또는 CompleteMultipartUpload 요청에 조건부 쓰기를 사용할 수 있어요.

자세한 내용은 조건부 쓰기로 객체 덮어쓰기 방지하기를 참고하세요.

멀티파트 업로드와 요금 (Multipart upload and pricing)

멀티파트 업로드를 시작한 후 업로드를 완료하거나 중지할 때까지 Amazon S3는 모든 부분을 유지해요. 수명 기간 동안 이 멀티파트 업로드와 연결된 부분에 대해 모든 스토리지, 대역폭, 요청 요금이 부과돼요.

이 부분들은 부분이 업로드될 때 지정된 스토리지 클래스에 따라 청구돼요. 다만 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive에 업로드된 부분은 청구되지 않아요. S3 Glacier Flexible Retrieval 스토리지 클래스에 대한 PUT 요청의 진행 중인 멀티파트 부분은 업로드가 완료될 때까지 S3 Standard 요금으로 S3 Glacier Flexible Retrieval 스테이징 스토리지로 청구돼요. 또한 CreateMultipartUpload와 UploadPart 모두 S3 Standard 요금으로 청구돼요. CompleteMultipartUpload 요청만 S3 Glacier Flexible Retrieval 요금으로 청구돼요. 마찬가지로 S3 Glacier Deep Archive 스토리지 클래스에 대한 PUT의 진행 중인 멀티파트 부분은 업로드가 완료될 때까지 S3 Standard 요금으로 S3 Glacier Flexible Retrieval 스테이징 스토리지로 청구되며, CompleteMultipartUpload 요청만 S3 Glacier Deep Archive 요금으로 청구돼요.

멀티파트 업로드를 중지하면 Amazon S3는 업로드 아티팩트와 업로드한 모든 부분을 삭제해요. 이 아티팩트에 대해서는 청구되지 않아요. 지정된 스토리지 클래스와 관계없이 불완전한 멀티파트 업로드를 삭제하는 데 조기 삭제 요금은 없어요. 요금에 대한 자세한 내용은 Amazon S3 요금을 참고하세요.

참고 스토리지 비용을 최소화하려면 AbortIncompleteMultipartUpload 작업을 사용해 지정된 일 수 후에 불완전한 멀티파트 업로드를 삭제하는 수명주기 규칙을 구성할 것을 권장해요. 불완전한 멀티파트 업로드를 삭제하는 수명주기 규칙 생성에 대한 자세한 내용은 버킷 수명주기 구성을 구성해 불완전한 멀티파트 업로드 삭제를 참고하세요.

멀티파트 업로드에 대한 API 지원 (API support for multipart upload)

Amazon Simple Storage Service API Reference의 다음 절은 멀티파트 업로드의 REST API를 설명해요.

AWS Lambda 함수를 사용하는 멀티파트 업로드 워크스루는 멀티파트 업로드 및 전송 가속화를 사용해 Amazon S3에 대형 객체 업로드를 참고하세요.

멀티파트 업로드에 대한 AWS Command Line Interface 지원 (AWS Command Line Interface support for multipart upload)

AWS Command Line Interface의 다음 주제는 멀티파트 업로드 작업을 설명해요.

멀티파트 업로드에 대한 AWS SDK 지원 (AWS SDK support for multipart upload)

AWS SDK를 사용해 객체를 부분으로 나눠 업로드할 수 있어요. API 작업별로 지원되는 AWS SDK 목록은 다음을 참고하세요.

멀티파트 업로드 API와 권한 (Multipart upload API and permissions)

멀티파트 업로드 작업을 사용하려면 필요한 권한이 있어야 해요. 접근 제어 목록(ACL), 버킷 정책 또는 사용자 정책을 사용해 개인에게 이러한 작업을 수행할 권한을 부여할 수 있어요. 다음 표는 ACL, 버킷 정책 또는 사용자 정책을 사용할 때 다양한 멀티파트 업로드 작업에 필요한 권한을 나열해요.

작업 필요한 권한
Create Multipart Upload 멀티파트 업로드 요청을 만들려면 객체에 대해 s3:PutObject 작업을 수행할 수 있어야 해요. 버킷 소유자는 다른 보안 주체가 s3:PutObject 작업을 수행하도록 허용할 수 있어요.
Initiate Multipart Upload 멀티파트 업로드를 시작하려면 객체에 대해 s3:PutObject 작업을 수행할 수 있어야 해요. 버킷 소유자는 다른 보안 주체가 s3:PutObject 작업을 수행하도록 허용할 수 있어요.
Initiator 멀티파트 업로드를 시작한 사람을 식별하는 컨테이너 요소. 개시자가 AWS 계정이면 이 요소는 Owner 요소와 동일한 정보를 제공해요. 개시자가 IAM 사용자이면 이 요소는 사용자 ARN과 표시 이름을 제공해요.
Upload Part 부분을 업로드하려면 객체에 대해 s3:PutObject 작업을 수행할 수 있어야 해요. 버킷 소유자는 개시자가 해당 객체에 대해 부분을 업로드할 수 있도록 개시자가 객체에 대해 s3:PutObject 작업을 수행하는 것을 허용해야 해요.
Upload Part (Copy) 부분을 업로드하려면 객체에 대해 s3:PutObject 작업을 수행할 수 있어야 해요. 기존 객체에서 부분을 업로드하므로 원본 객체에 대해 s3:GetObject가 허용되어야 해요. 개시자가 객체에 대해 부분을 업로드하려면 버킷 소유자가 개시자가 객체에 대해 s3:PutObject 작업을 수행하는 것을 허용해야 해요.
Complete Multipart Upload 멀티파트 업로드를 완료하려면 객체에 대해 s3:PutObject 작업을 수행할 수 있어야 해요. 개시자가 해당 객체에 대한 멀티파트 업로드를 완료하려면 버킷 소유자가 개시자가 객체에 대해 s3:PutObject 작업을 수행하는 것을 허용해야 해요.
Stop Multipart Upload 멀티파트 업로드를 중지하려면 s3:AbortMultipartUpload 작업을 수행할 수 있어야 해요. 기본적으로 버킷 소유자와 멀티파트 업로드 개시자는 IAM 및 S3 버킷 정책의 일부로 이 작업을 수행할 수 있어요. 개시자가 IAM 사용자이면 해당 사용자의 AWS 계정도 해당 멀티파트 업로드를 중지할 수 있어요. VPC 엔드포인트 정책을 사용하면 멀티파트 업로드 개시자가 s3:AbortMultipartUpload 작업을 수행할 권한을 자동으로 얻지 못해요. 이러한 기본값 외에도 버킷 소유자는 다른 보안 주체가 객체에 대해 s3:AbortMultipartUpload 작업을 수행하도록 허용할 수 있어요. 버킷 소유자는 어떤 보안 주체에게도 s3:AbortMultipartUpload 작업 수행 능력을 거부할 수 있어요.
List Parts 멀티파트 업로드에서 부분을 나열하려면 s3:ListMultipartUploadParts 작업을 수행할 수 있어야 해요. 기본적으로 버킷 소유자는 버킷에 대한 모든 멀티파트 업로드의 부분을 나열할 권한이 있어요. 멀티파트 업로드 개시자는 특정 멀티파트 업로드의 부분을 나열할 권한이 있어요. 멀티파트 업로드 개시자가 IAM 사용자이면 해당 IAM 사용자를 제어하는 AWS 계정도 해당 업로드의 부분을 나열할 권한이 있어요. 이러한 기본값 외에도 버킷 소유자는 다른 보안 주체가 객체에 대해 s3:ListMultipartUploadParts 작업을 수행하도록 허용할 수 있어요. 버킷 소유자는 어떤 보안 주체에게도 s3:ListMultipartUploadParts 작업 수행 능력을 거부할 수도 있어요.
List Multipart Uploads 버킷에 진행 중인 멀티파트 업로드를 나열하려면 버킷에 대해 s3:ListBucketMultipartUploads 작업을 수행할 수 있어야 해요. 기본값 외에도 버킷 소유자는 다른 보안 주체가 버킷에 대해 s3:ListBucketMultipartUploads 작업을 수행하도록 허용할 수 있어요.
AWS KMS 암호화 및 복호화 관련 권한 AWS Key Management Service(AWS KMS) KMS 키로 암호화해 멀티파트 업로드를 수행하려면 요청자에게 다음 권한이 있어야 해요: 키에 대한 kms:Decrypt 및 kms:GenerateDataKey 작업. CreateMultipartUpload API에 대한 kms:GenerateDataKey 작업. UploadPart 및 UploadPartCopy API에 대한 kms:Decrypt 작업. Amazon S3가 멀티파트 업로드를 완료하기 전에 암호화된 파일 부분을 복호화하고 데이터를 읽어야 하므로 이러한 권한이 필요해요. 객체의 체크섬 값을 얻으려면 kms:Decrypt 권한과 고객 제공 암호화 키를 사용한 서버 측 암호화도 필요해요. CompleteMultipartUpload API를 사용할 때 이러한 필수 권한이 없으면 객체는 체크섬 값 없이 생성돼요. IAM 사용자나 역할이 KMS 키와 같은 AWS 계정에 있다면 키와 IAM 정책 모두에 권한이 있는지 확인하세요. IAM 사용자나 역할이 KMS 키와 다른 계정에 속한다면 키 정책과 IAM 사용자 또는 역할 모두에 권한이 있어야 해요.
SSE-C(고객 제공 암호화 키를 사용한 서버 측 암호화) CompleteMultipartUpload API를 사용할 때는 SSE-C(고객 제공 암호화 키를 사용한 서버 측 암호화)를 제공해야 해요. 그렇지 않으면 객체가 체크섬 없이 생성되고 체크섬 값이 반환되지 않아요.

ACL 권한과 접근 정책의 권한 간 관계에 대한 자세한 내용은 ACL 권한과 접근 정책 권한 매핑을 참고하세요. IAM 사용자, 역할 및 모범 사례에 대한 자세한 내용은 IAM 사용자 가이드의 IAM 아이덴티티(사용자, 사용자 그룹, 역할)를 참고하세요.

멀티파트 업로드 작업에서의 체크섬 (Checksums with multipart upload operations)

실제 멀티파트 업로드를 수행하는 데 사용되는 Amazon S3 API는 세 가지예요: CreateMultipartUpload, UploadPart, CompleteMultipartUpload. 다음 표는 각 API에 대해 제공해야 하는 체크섬 헤더와 값을 나타내요.

체크섬 알고리즘 체크섬 유형 CreateMultipartUpload UploadPart CompleteMultipartUpoad
CRC-64/NVME(CRC64NVME) 전체 객체 필수 헤더: x-amz-checksum-algorithm 선택 헤더: x-amz-checksum-crc64nvme 선택 헤더: x-amz-checksum-algorithm x-amz-crc64
CRC-32(CRC32), CRC-32-C(CRC32C) 전체 객체 필수 헤더: x-amz-checksum-algorithm x-amz-checksum-type 선택 헤더: x-amz-checksum-crc64nvme 선택 헤더: x-amz-checksum-algorithm x-amz-crc32 x-amz-crc32c
CRC-32(CRC32), CRC-32C(CRC32C), SHA-1(SHA1), SHA-256(SHA256), MD5(MD5), XXHash64(XXHASH64), XXHash3(XXHASH3), XXHash128(XXHASH128), SHA-512(SHA512) 합성(Composite) 필수 헤더: x-amz-checksum-algorithm 필수 헤더: x-amz-checksum-crc32 x-amz-checksum-crc32c x-amz-checksum-sha1 x-amz-checksum-sha256 x-amz-checksum-md5 x-amz-checksum-xxhash64 x-amz-checksum-xxhash3 x-amz-checksum-xxhash128 x-amz-checksum-sha512 필수 헤더: 모든 부분 수준 체크섬을 CompleteMultiPartUpload 요청에 포함해야 해요. 선택 헤더: x-amz-checksum-crc32 x-amz-checksum-crc32c x-amz-checksum-sha1 x-amz-checksum-sha256 x-amz-checksum-md5 x-amz-checksum-xxhash64 x-amz-checksum-xxhash3 x-amz-checksum-xxhash128 x-amz-checksum-sha512

더 알아보기 (Learn more)