기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon S3 작업에 S3CrtClient 사용
S3CrtClient 클래스는 AWS SDK for C++ 버전 1.9에서 사용할 수 있으며, Amazon S3와의 대용량 데이터 파일 업로드 및 다운로드 처리량을 개선합니다. 이 릴리스의 개선 사항에 대한 자세한 내용은 Improving Amazon S3 Throughput with AWS SDK for C++ v1.9
S3CrtClient는 AWS 공통 런타임(CRT) 라이브러리 위에 구현됩니다.
참고
불완전하거나 부분적인 업로드에 대한 요금이 부과되지 않도록 Amazon S3 버킷에서 AbortIncompleteMultipartUpload 수명 주기 규칙을 활성화하는 것이 좋습니다.
이 규칙은 시작된 후 지정된 일수 내에 완료되지 않은 멀티파트 업로드를 중단하도록 Amazon S3에 지시합니다. 설정된 시간 제한을 초과하면 Amazon S3에서 업로드를 중단한 후 완료되지 않은 업로드 데이터를 삭제합니다.
자세한 내용은 Amazon S3 사용 설명서의 버킷에서 수명 주기 구성 설정을 참조하세요.
사전 조건
시작하기 전에 AWS SDK for C++ 사용 시작하기를 읽어보시기 바랍니다.
예제 코드를 다운로드하고 코드 예제 시작하기에 설명된 대로 솔루션을 빌드합니다.
예제를 실행하려면 코드가 요청을 수행하는 데 사용하는 사용자 프로필이 AWS에서 적절한 권한(서비스 및 동작에 대한)을 보유하고 있어야 합니다. 자세한 내용은 AWS 자격 증명 제공을 참조하세요.
S3CrtClient를 사용한 객체 업로드 및 다운로드
이 예제는 S3CrtClient 사용 방법을 보여줍니다. 이 예제에서는 버킷을 생성하고, 객체를 업로드하고, 객체를 다운로드한 다음 파일과 버킷을 삭제합니다. PUT 작업은 멀티파트 업로드로 변환됩니다. GET 작업은 여러 개의 “범위 지정” GET 요청으로 변환됩니다. 멀티파트 업로드에 대한 자세한 내용은 Amazon S3 사용 설명서에서 멀티파트 업로드를 사용한 객체 업로드 및 복사를 참조하세요.
제공된 데이터 파일 ny.json은 이 예제에서 멀티파트 업로드로 업로드됩니다. 프로그램을 성공적으로 실행한 후 디버그 로그를 검토하면 이를 확인할 수 있습니다.
업로드에 실패하면 기본 CRT 라이브러리에서 AbortMultipartUpload가 발행되어 이미 업로드된 부분을 정리합니다. 그러나 네트워크 케이블이 뽑힌 경우처럼 모든 오류를 내부적으로 처리할 수 있는 것은 아닙니다. 부분적으로 업로드된 데이터가 계정에 남아 있지 않도록(부분적으로 업로드된 데이터도 과금 대상임) Amazon S3 버킷에 수명 주기 규칙을 생성하는 것이 좋습니다. 수명 주기 규칙을 설정하는 방법을 알아보려면 Amazon S3 비용을 줄이기 위해 불완전 멀티파트 업로드 검색 및 삭제
디버그 로그를 사용하여 멀티파트 업로드 세부 정보 탐색
-
main()에는 코드 업데이트 지침이 포함된 "TODO" 주석이 있습니다.-
file_name: 코드 주석에 제공된 링크에서 샘플 데이터 파일ny.json를 다운로드하거나 자체 대용량 데이터 파일을 사용합니다. -
region: enum을 사용하여region변수를 계정의 AWS 리전으로 업데이트합니다. 계정의 리전을 찾으려면 AWS Management 콘솔에 로그인한 후 오른쪽 상단 모서리에서 리전을 찾습니다.
-
-
예제를 빌드합니다.
-
file_name변수로 지정된 파일을 실행 파일 폴더로 복사하고s3-crt-demo실행 파일을 실행합니다. -
실행 파일 폴더에서 최신
.log파일을 찾습니다. -
로그 파일을 열고 검색을 선택한 다음
partNumber를 입력합니다. -
로그에는 다음과 유사한 항목이 포함되어 있습니다. 여기서
partNumber와uploadId는 업로드된 파일의 각 부분마다 지정됩니다.PUT /my-object partNumber=1&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD및
PUT /my-object partNumber=2&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD
전체 예제