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

4분 분량
0

Amazon Simple Storage Service(S3) 버킷에서 다른 버킷으로 대용량 데이터(1TB 이상)를 전송하고 싶습니다.

간략한 설명

사용 사례에 따라 다음 방법의 하나를 사용해 버킷 간 데이터 전송을 할 수 있습니다.

  • AWS CLI를 사용해 병렬 업로드 실행
  • AWS SDK 사용
  • 리전 간 복제 또는 동일 리전 복제 사용
  • Amazon S3 배치 작업
  • Amazon EMR과 S3distcp 사용
  • AWS DataSync 사용

해결 방법

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

**참고:**AWS Command Line Interface(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 인스턴스에서는 이 명령을 실행해 파일 이름이 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에서 원본 버킷에서 대상 버킷으로 새 개체를 자동으로 복제할 수 있습니다. 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. AWS DataSync 콘솔을 엽니다.
  2. 태스크를 생성합니다.
  3. Amazon S3에 새 위치를 생성합니다.
  4. S3 버킷을 원본 위치로 선택합니다.
  5. 원본 위치 구성 설정을 업데이트합니다. 원본 S3 버킷에 액세스하려면 AWS Identity and Access Management(AWS IAM) 역할을 지정해야 합니다.
  6. 대상 위치로 S3 버킷을 선택합니다.
  7. 대상 위치 구성 설정을 업데이트합니다. S3 대상 버킷에 액세스하려면 IAM 역할을 지정해야 합니다.
  8. 작업에 맞게 설정을 구성합니다.
  9. 구성 세부 정보를 검토하세요.
  10. 작업 생성을 선택합니다.
  11. 작업을 시작합니다.

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

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