[AWS] S3 대용량 객체 업로드
이론적으로 버킷에 저장할 수 있는 데이터의 총용량에는 제한이 없지만 객체 하나의 용량은 5TB를 초과할 수 없으며, 한 번의 업로드 작업은 5GB를 초과할 수 없다.
이와 같은 용량 제한 문제를 피하기 위한 방법으로, AWS는 100MB 초과 객체의 경우 멀티파트 업로드(Multipart Upload) 기능을 사용할 것을 권장한다.
멀티파트 업로드
https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html
멀티파트 업로드는 말 그대로, S3에 하나의 대용량 파일을 업로드할 때 여러 개의 부분으로 분리해 업로드하는 기능이며, 여러 부분 중 일부가 업로드에 실패하더라도 반복적으로 업로드 작업을 수행한다는 특징이 있다.
AWS CLI 또는 고수준 API로 S3에 업로드할 경우 멀티파트 업로드 기능이 자동으로 적용되지만, 저수준 API로 업로드 작업을 수행할 경우 직접 객체를 여러 부분으로 분할할 수 있다.
Application Programming Interface(API)는 코드 또는 명령줄 방식으로 각종 작업을 실행할 수 있는 프로그래밍 기법의 인터페이스이며, AWS의 각종 서비스에 대한 어드민 작업 방법으로 널리 활용된다. AWS는 세심한 설정이 필요한 S3 작업을 위해 저수준 API를 제공하고, 좀 더 자동화 수준이 높은 S3 업로드 작업을 위한 고수준 API를 제공한다.
Amazon S3 Transfer Acceleration
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/transfer-acceleration.html
S3 버킷에 대용량 파일을 전송해야 하는 경우 Amazon S3 Transfer Acceleration 환경 설정을 통해 전송 속도를 높일 수 있다. 버킷에서 Transfer Acceleration 기능을 사용하도록 설정한 경우, 업로드 작업은 인근 AWS 엣지 로케이션과 Amazon의 내부 네트워크를 통해 고속으로 처리된다.
Transfer Accleration이 소속된 지역과 특정 AWS 리전 사이에서 실제로 얼마나 빠른 속도로 파일을 전송하는지 확인하려면 Amazon S3 Transfer Accleration Speed Comparison 도구를 이용합니다.
Transfer Accleration이 파일 전송에 도움이 되는 것을 확인한다면, 버킷에서 이 기능을 활성화한 뒤 사용하면 됩니다. 이 때 bucketnames3.-accelerate.amazonaws.com과 같이 특수한 엔드포인트 도메인 네임으로 전송 경로를 설정합니다.
참고사항
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791161756103