Amazon S3에 대용량 데이터를 업로드할 때 성능을 최적화하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 11월 2일

대용량 데이터를 Amazon Simple Storage Service(Amazon S3)에 업로드하거나 S3 버킷 간에 대용량 데이터를 복사하려고 합니다. 이 데이터 전송의 성능을 최적화하려면 어떻게 해야 하나요?

해결 방법

대용량 데이터를 Amazon S3 버킷과 송수신하는 경우 다음과 같은 방법을 검토하세요.

AWS 명령줄 인터페이스(AWS CLI)를 사용한 병렬 업로드

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

전송을 완료하는 데 필요한 전체 시간을 단축하려면, 전송을 여러 개의 상호 독립적인 작업으로 분할하세요. aws s3 cp(복사), aws s3 mv(이동) 또는 aws s3 sync(동기화)의 여러 인스턴스를 동시에 실행할 수도 있습니다.

전송을 분할하는 한 가지 방식은 --exclude 및 --include 파라미터를 사용하여 파일명을 기준으로 작업을 분리하는 것입니다. 예를 들어, 한 버킷에서 다른 버킷으로 대량의 데이터를 복사하려하는 경우를 살펴볼 수 있습니다. 이 예시에서는 모든 파일 이름이 숫자로 시작합니다. AWS CLI의 두 인스턴스에서 다음 명령을 실행할 수 있습니다.

참고: --exclude--include 파라미터는 클라이언트 측에서 처리됩니다. 따라서 로컬 컴퓨터의 리소스가 작업의 성능에 영향을 미칠 수 있습니다.

이 명령을 사용하여 이름이 0~4의 숫자로 시작하는 파일을 복사합니다.

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

이 명령을 사용하여 이름이 5~9의 숫자로 시작하는 파일을 복사합니다.

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

중요: 대규모의 객체(수억 개)를 전송해야만 하는 경우 AWS SDK를 사용하여 복사를 수행하는 사용자 지정 애플리케이션을 구축하는 방법을 검토해 보세요. AWS CLI도 복사를 수행할 수 있지만 이 정도의 규모에는 사용자 지정 애플리케이션이 더 효율적일 수 있습니다.

AWS Snowball

특히 10TB를 초과하는 데이터를 온프레미스 데이터 센터와 Amazon S3간에 전송하는 경우 AWS Snowball 사용을 검토해 보세요.

다음과 같은 제한 사항에 유의하십시오.

  • AWS Snowball은 버킷 간 데이터 전송을 지원하지 않습니다.
  • AWS Snowball은 AWS Key Management System(AWS KMS)이 관리하는 키를 사용하는 서버 측 암호화를 지원하지 않습니다. 자세한 내용은 AWS Snowball의 암호화를 참조하세요.

Amazon EMR을 이용한 S3DistCp

Amazon S3 버킷 간에 데이터를 복사할 때는 Amazon EMR을 이용한 S3DistCp 사용을 검토해 보세요. S3DistCp는 대용량 객체의 병렬 복사를 지원합니다.

중요: 이 옵션을 사용하려면 Amazon EMR 클러스터를 시작해야 하므로 먼저 Amazon EMR 요금을 검토해야 합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?