Amazon S3용 AWS CLI 동기화 명령을 사용하여 데이터 전송 성능을 개선하려면 어떻게 해야 합니까?

4분 분량
0

AWS Command Line Interface(AWS CLI) “동기화” 명령을 사용하여 Amazon Simple Storage Service(S3)에서 데이터를 전송하고자 합니다. 하지만 전송 완료까지 시간이 오래 걸립니다.

간략한 설명

소스 버킷과 대상 버킷에 있는 객체 수는 동기화 명령이 프로세스를 완료하는 데 걸리는 시간에 영향을 줄 수 있습니다. 전송 크기는 동기화 기간이나 Amazon S3 요청으로 발생하는 비용에 영향을 미칠 수 있습니다.

삭제 마커는 목록 성능에도 영향을 미치므로 삭제 마커 수를 최소화하는 것이 좋습니다. 동기화 명령은 백엔드에서 목록 API 직접 호출을 실행하므로 삭제 마커는 동기화 명령의 성능에도 영향을 미칩니다. S3 수명 주기 구성 규칙을 사용하여 버전 관리가 활성화된 버킷에서 만료된 삭제 마커를 자동으로 제거할 수 있습니다.

해결 방법

동기화 명령을 실행할 때 전송 시간을 단축하려면 다음 방법을 사용합니다.

여러 AWS CLI 작업 실행

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

대량의 데이터를 복사하려면 별도의 동기화 작업을 병렬로 실행합니다. 다음 예제 명령은 다양한 접두사에 대해 병렬 동기화 작업을 실행합니다.

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

또는 별도의 제외 및 포함 필터에 병렬 동기화 작업을 실행합니다. 다음 예제 작업은 숫자 0부터 4까지, 숫자 5부터 9까지로 시작하는 키 이름으로 동기화할 파일을 구분합니다.

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

참고: 제외포함 필터를 사용하는 경우에도 sync 명령은 소스 버킷의 모든 파일을 검토합니다. 검토를 통해 대상 버킷에 복사할 소스 파일을 식별합니다. 서로 다른 키 이름 접두사에 대한 동기화 작업이 여러 개 있는 경우 각 동기화 작업에서 모든 소스 파일을 검토합니다. 그러나 제외포함 필터가 있으면 필터에 포함된 파일만 대상 버킷에 복사됩니다.

워크로드 성능 최적화 방법에 관한 자세한 내용은 디자인 패턴 모범 사례: Amazon S3 성능 최적화를 참조하십시오.

Amazon S3 Transfer Acceleration 활성화

Amazon S3 Transfer Acceleration을 사용하여 전송 속도를 개선하십시오.

Transfer Acceleration은 추가 요금이 발생합니다. 요금을 검토하려면 Amazon S3 pricing(Amazon S3 요금) 페이지에서 Data transfer(데이터 전송) 탭을 선택합니다. Transfer Acceleration이 전송 속도를 향상시키는지 확인하려면 Amazon S3 Transfer Acceleration 속도 비교 도구를 사용하십시오.

참고: Transfer Acceleration은 AWS 리전 전체에서 CopyObject 작업을 지원하지 않습니다.

AWS CLI 구성 값 수정

max_concurrent_requests

max_concurrent_requests를 사용하는 경우 Amazon S3에 한 번에 전송할 수 있는 기본 요청 수는 10개입니다. 성능을 향상시키려면 값을 늘리십시오.

 중요:

  • 더 많은 스레드를 실행하면 컴퓨터에서 더 많은 리소스를 사용하게 됩니다. 컴퓨터에 최대 동시 요청 수를 지원할 수 있는 충분한 리소스가 있는지 확인하십시오.
  • 동시 요청이 너무 많으면 연결 시간 초과가 발생하거나 시스템 응답 속도가 느려질 수 있습니다. AWS CLI에서 시간 초과 문제를 방지하려면 --cli-read-timeout 값 또는 --cli-connect-timeout 값을 0으로 설정합니다.

multipart_threshold

파일이 크기 임계값에 도달하면 Amazon S3는 단일 작업 대신 멀티파트 업로드를 사용합니다. multipart_threshold의 기본값은 8MB입니다. 기본값을 늘리려면 다음 명령을 실행합니다.

aws configure set default.s3.multipart_threshold 16MB

참고: 16MB를 늘리려는 값으로 바꾸십시오.

multipart_chunksize

multipart_chunksize의 기본값은 8MB이고 최소값은 5MB입니다. 청크 크기 임계값을 늘리려면 다음 명령을 실행합니다.

aws configure set default.s3.multipart_chunksize 16MB

참고: 16MB를 늘리려는 값으로 바꾸십시오.

바이트 수를 정수로 지정하거나 크기 접미사를 사용할 수 있습니다. 대형 객체의 경우 multipart_threshold100MB로 설정하여 상당히 큰 파일만 멀티파트 업로드를 사용하도록 할 수 있습니다. multipart_chunksize25MB로 설정하여 효율적인 업로드와 관리 가능한 파트 크기 사이의 균형을 맞춥니다.

(선택 사항) EC2 인스턴스 구성 확인

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용하여 동기화 작업을 실행하는 경우 다음 모범 사례를 이용하여 성능을 개선하십시오.

  • 더 큰 Amazon EC2 인스턴스 유형을 사용하십시오. 더 큰 인스턴스 유형에는 높은 대역폭과 Amazon Elastic Block Store(Amazon EBS)에 최적화된 네트워크가 있습니다.
  • 대기 시간을 줄이려면 인스턴스와 Amazon S3 버킷 사이의 지리적 거리를 줄이십시오. 인스턴스가 버킷과 다른 리전에 있는 경우, 동일한 리전에 있는 인스턴스를 사용하십시오.
  • 인스턴스가 소스 버킷과 동일한 리전에 있는 경우, S3에 Amazon Virtual Private Cloud(VPC) 게이트웨이 엔드포인트를 설정하십시오.

관련 정보

S3 버킷과 EC2 인스턴스 간에 데이터를 복사할 때 전송 속도를 높이려면 어떻게 해야 합니까?

Amazon S3 버킷에서 다른 버킷으로 대량의 데이터를 전송하려면 어떻게 해야 합니까?

Amazon S3에서 다운로드하거나 업로드할 때 속도가 느리거나 불안정한 문제를 해결하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 2달 전
댓글 없음