AWS S3 업로드 속도 문제
AWS S3는 아마존에서 운영하는 스토리지 서비스로 유명합니다. 전 세계에서 가장 많이 이용되는 스토리지 서비스라고 해도 무방할 정도로 널리 사용되고 있습니다.
해당 S3 스토리지에 파일 등을 업로드 할 때 AWS CLI 등의 프로그램을 이용할 때가 있습니다. 보통 대용량이거나, 많은 파일을 업로드 할 때 사용합니다.
수십 GB 이상의 파일을 업로드 할 때에는 속도가 굉장히 중요한데, 가끔씩 AWS CLI를 이용하여 S3 스토리지로 파일을 업로드 할 때 속도가 굉장히 낮게 나오는 문제가 있습니다. 저의 경우 한국에서 오레곤(us-west-2) 서버로 파일을 전송하는데 ~3 MB/s 정도 나왔던 것 같습니다.
이런 경우에, 가능한 대역폭을 모두 사용하여 빠르게 파일을 업로드 할 수 있도록 세팅을 변경하도록 하겠습니다. 저는 세팅을 변경하고 80 MB/s 까지 속도가 나왔습니다. 물론, 속도가 얼마나 개선되는지는 사용하고 계신 인터넷 환경에 따라(1Gbps 회선인지, 100Mbps 회선인지 등..) 차이가 날 것입니다.
해결 방법
해결 방법은 간단합니다. S3 스토리지로 파일을 업로드 할 때 multipart upload를 강제로 설정해주면 됩니다. Multipart upload는 파일을 작은 단위로 쪼개서 병렬로 전송하는 방식입니다. 개별 파일의 전송 속도는 한계가 있으므로, 최대한 많은 파일을 동시에 보냄으로서 인터넷 대역폭을 최대한 활용하는 방법입니다.
AWS CLI가 설치되어 있고, aws configure을 완료하였다고 가정하고 진행하겠습니다.
C:\Users\(사용자 이름)\.aws
aws 설정이 저장되는 폴더로 이동해 주세요. 만약 폴더가 없다면 윈도우의 사용자 폴더 내에 .aws라는 폴더를 만들어 주시면 됩니다.
[profile default] s3 = max_concurrent_requests = 200 max_queue_size = 5000 multipart_threshold = 4MB multipart_chunksize = 4MB
해당 폴더를 열어서 위의 내용을 아래에 추가해 줍니다. 추가한 내용은 multipart upload를 설정해주었고, 최대 요청 수 등을 늘려서 대역폭을 최대한 활용할 수 있도록 하였습니다.
수정한 파일을 저장하고 다시 AWS CLI를 이용하여 S3 스토리지로 파일을 업로드하면 속도가 증가한 것을 확인하실 수 있을 것입니다.
다만, 해당 방식대로 multipart upload를 활성화 시키면 업로드 명령을 내렸을 때 업로드 할 파일을 굉장히 많이 쪼개는 작업을 수행하기 때문에 컴퓨터 속도가 순간적으로 많이 느려질 수 있습니다.
마치면서
이렇게 AWS CLI에서 S3 스토리지로 파일을 업로드할 때 속도를 개선하는 방법에 대해서 알아보았습니다. 위 방법을 통해 시간을 많이 절약하셨으면 좋겠습니다.