멀티파트 업로드
기본적으로 S3에 단일 작업으로 업로드할 수 있는 객체의 크기는 최대 5GB이다. 만약 5GB를 초과하는 객체를 업로드해야 한다면 멀티파트 업로드 기능을 사용해야 하는데. 멀티파트 업로드 기능이란 하나의 대용량 파일을 여러 개의 부분으로 나눠 업로드하는 기능이다.
일반적으로 객체 크기가 100MB를 넘으면 멀티파트 업로드를 권장한다. 멀티파트 업로드를 이용하면 최대 5TB의 객체를 업로드할 수 있고, 큰 객체를 여러 조각으로 나눠 병렬 처리할 수 있어 빠르게 업로드할 수 있다.
다만 객체의 일부분만 업로드된 경우에는 객체가 S3에 표시되지 않는다. 하지만 용량을 차지하고 있기 때문에 비용이 발생하므로 수명주기 규칙 등을 활용해 삭제해 주는 등의 관리가 필요하다.
cli를 이용한 멀티파트 업로드하기
멀티파트 업로드를 사용할 때는 상위 수준인 aws s3 또는 하위 수준인 aws s3api 명령을 사용할 수 있다. 다만 aws s3 cp, sync와 같은 명령어를 사용하면 자동으로 멀티파트 업로드를 수행하기 때문에 상위 수준 명령인 aws s3 명령을 사용하는 것을 권장한다. aws s3api 명령은 aws s3가 특정 업로드를 지원하지 않을 때 사용할 수 있다.
참고 : https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html
멀티파트 다운로드
AWS S3에 저장된 대용량 파일을 복사하는 경우 멀티파트 업로드와 비슷하게 다운로드 관련 API를 제공할 것 같지만…… 멀티파트 다운로드 API는 제공되지 않는다.
aws s3 cp, sync 명령을 이용하면 자동으로 대용량 객체를 멀티파트로 다운로드할 수 있도록 설계되어 있다. 멀티파트 다운로드 시에는 기본적으로 8MB 크기로 구성된 부분으로 다운로드하게 되며, 이 크기는 .aws/credentials 등과 같은 aws cli 구성 설정을 이용하여 변경할 수 있다.
[profile development]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
참고 문서
https://repost.aws/ko/knowledge-center/s3-multipart-upload-cli
https://aws.amazon.com/ko/blogs/korea/amazon-s3-multi-part-dowload/