한 Amazon S3 버킷에서 다른 버킷으로 많은 데이터를 전송하는 가장 좋은 방법은 무엇인가요?

4분 분량
0

한 Amazon Simple Storage Service(S3) 버킷에서 다른 버킷으로 많은 데이터(1TB 이상)를 전송하려고 합니다. 어떻게 해야 하나요?

간략한 설명

사용 사례에 따라 다음 옵션 중 하나를 사용하여 버킷 간 데이터 전송을 수행할 수 있습니다.

  • AWS CLI(명령줄 인터페이스)를 사용하여 병렬 업로드 실행
  • AWS SDK 사용
  • 교차 리전 복제 또는 동일한 리전 복제 사용
  • Amazon S3 배치 작업 사용
  • Amazon EMR에서 S3DistCp 사용
  • AWS DataSync 사용

해결 방법

AWS CLI를 사용하여 병렬 업로드 실행

참고: 모범 사례로 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요. 자세한 내용은 AWS CLI 설치를 참조하세요.

전송을 여러 개의 상호 배타적 작업으로 분할하면 멀티 스레딩을 통해 전송 시간을 개선할 수 있습니다. 예를 들어, AWS CLI를 사용하여 aws s3 cp, aws s3 mv 또는 aws s3 sync의 여러 병렬 인스턴스를 실행할 수 있습니다. AWS CLI의 각 인스턴스에 대해 --exclude 및 --include 파라미터를 사용하는 동안 추가 업로드 스레드를 생성할 수 있습니다. 이러한 파라미터는 파일 이름을 기준으로 작업을 필터링합니다.

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

예를 들어, 파일 이름이 숫자로 시작하는 많은 데이터를 한 버킷에서 다른 버킷으로 복사하려면 다음 명령을 실행합니다.

먼저, 다음 명령을 실행하여 이름이 0~4로 시작하는 파일을 복사합니다.

aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

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

그런 다음, 두 번째 AWS CLI 인스턴스에서 다음 명령을 실행하여 이름이 5~9로 시작하는 파일을 복사합니다.

aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

또한 다음 AWS CLI 구성을 사용자 지정하여 데이터 전송 속도를 높일 수 있습니다.

  • multipart_chunksize: 이 값은 AWS CLI가 개별 파일에 대한 멀티파트 업로드에서 업로드하는 각 파트의 크기를 설정합니다. 이 설정을 사용하면 더 빠른 업로드 속도를 위해 큰 파일(예: 300MB)을 더 작은 파트로 나눌 수 있습니다.
    참고: 멀티파트 업로드를 수행하려면 단일 파일을 10,000개 이하의 개별 파트로 업로드해야 합니다. 설정한 청크 크기가 파트 파일 크기 및 파트 수의 균형을 맞추는지 확인해야 합니다.
  • max_concurrent_requests: 이 값은 한 번에 Amazon S3에 전송할 수 있는 요청 수를 설정합니다. 기본값은 10입니다. 컴퓨터의 리소스처럼 더 높은 값으로 늘릴 수 있습니다. 원하는 최대 동시 요청 수를 지원하기에 충분한 리소스가 시스템에 있는지 확인해야 합니다.

AWS SDK 사용

매우 많은 객체에 대한 데이터 전송을 수행하려는 경우 AWS SDK를 통한 사용자 지정 애플리케이션 구축 방법을 고려하세요. AWS CLI를 사용하여 복사 작업을 수행할 수도 있습니다. 하지만 수십억 규모의 객체에서 전송을 수행할 경우 사용자 지정 애플리케이션이 더 효율적일 수 있습니다.

교차 리전 복제 또는 동일한 리전 복제 사용

소스 버킷에서 교차 리전 복제(CRR) 또는 동일한 리전 복제(SRR)를 설정하면 Amazon S3은 소스 버킷의 새 객체를 대상 버킷에 자동으로 복제합니다. 접두사 또는 태그를 사용하여 복제되는 객체를 필터링하도록 선택할 수 있습니다. 복제 구성 및 필터 지정에 대한 자세한 내용은 복제 구성 개요를 참조하세요.

복제가 구성되면 새 객체만 대상 버킷에 복제됩니다. 기존 객체는 대상 버킷에 복제되지 않습니다. 자세한 내용은 S3 배치 복제를 사용하여 기존 객체 복제를 참조하세요.

Amazon S3 배치 작업 사용

Amazon S3 배치 작업을 사용하면 단일 요청으로 여러 객체를 복사할 수 있습니다. 배치 작업을 생성할 때 Amazon S3 인벤토리 보고서를 사용하여 작업을 수행할 객체를 지정합니다. 또는 CSV 매니페스트 파일을 사용하여 배치 작업을 지정할 수 있습니다. 그런 다음, Amazon S3 배치 작업은 API를 호출하여 작업을 수행합니다.

배치 작업이 완료되면 알림을 받고 작업에 대한 완료 보고서를 받도록 선택할 수 있습니다.

Amazon EMR에서 S3DistCp 사용

Amazon EMR의 S3DistCp 작업은 Amazon S3 버킷 간 많은 객체의 병렬 복사를 수행할 수 있습니다. 먼저, S3DistCp는 소스 버킷의 파일을 Amazon EMR 클러스터의 작업자 노드로 복사합니다. 그런 다음, 작업은 작업자 노드에서 대상 버킷에 파일을 씁니다. S3DistCp 사용에 대한 자세한 지침은 Amazon EMR에서 S3DistCp를 사용하여 HDFS와 Amazon S3 사이에서 데이터를 효율적으로 이동하는 7가지 팁을 참조하세요.

중요: 이 옵션을 사용하려면 Amazon EMR을 사용해야 하므로 Amazon EMR 요금을 검토해야 합니다.

AWS DataSync 사용

한 Amazon S3 버킷에서 다른 버킷으로 대량의 데이터를 이동하려면 다음 단계를 수행하세요.

1.    DataSync 콘솔을 엽니다.

2.    태스크를 생성합니다.

3.    Amazon S3에 대한 새 위치를 생성합니다.

4.    S3 버킷을 소스 위치로 선택합니다.

5.    소스 위치 구성 설정을 업데이트합니다. 소스 S3 버킷에 액세스하는 데 사용할 AWS Identity Access Management (IAM) 역할을 지정해야 합니다.

6.    S3 버킷을 대상 위치로 선택합니다.

7.    대상 위치 구성 설정을 업데이트합니다. S3 대상 버킷에 액세스하는 데 사용할 AWS Identity Access Management(IAM) 역할을 지정해야 합니다.

8.    태스크에 대한 설정을 구성합니다.

9.    구성 세부 정보를 검토합니다.

10.    태스크 생성을 선택합니다.

11.    태스크를 시작합니다.

중요: AWS DataSync를 사용하는 경우 추가 비용이 발생합니다. DataSync 비용을 미리 보려면 DataSync 요금 구조 및 DataSync 한도를 검토하세요.


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