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

2분 분량
0

Amazon Simple Storage Service(Amazon S3)에 대량의 데이터를 업로드하거나 S3 버킷 간에 대량의 데이터를 복사하려고 합니다. 이 데이터 전송 성능을 최적화하고 싶습니다.

해결 방법

Amazon S3 버킷으로 또는 Amazon S3 버킷에서 대량의 데이터를 전송하려면 다음 방법 중 하나를 사용하십시오.

AWS Command Line Interface(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의 서버 측 암호화를 참조하십시오.

S3DistCp와 Amazon EMR

S3DistCp와 Amazon EMR을 사용하여 Amazon S3 버킷 간에 데이터를 복사하는 것을 고려해 보십시오. S3DistCp를 사용하면 대량의 오브젝트를 병렬로 복사할 수 있습니다.

중요: 이 옵션을 사용하려면 Amazon EMR 클러스터를 시작해야 하므로 Amazon EMR 요금을 검토해 보십시오.

관련 정보

요청 속도 및 성능 가이드라인

AWS 공식
AWS 공식업데이트됨 7달 전