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개입니다. 성능을 향상시키려면 값을 늘리십시오.
중요:
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_threshold를 100MB로 설정하여 상당히 큰 파일만 멀티파트 업로드를 사용하도록 할 수 있습니다. multipart_chunksize를 25MB로 설정하여 효율적인 업로드와 관리 가능한 파트 크기 사이의 균형을 맞춥니다.
(선택 사항) EC2 인스턴스 구성 확인
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용하여 동기화 작업을 실행하는 경우 다음 모범 사례를 이용하여 성능을 개선하십시오.
관련 정보
S3 버킷과 EC2 인스턴스 간에 데이터를 복사할 때 전송 속도를 높이려면 어떻게 해야 합니까?
Amazon S3 버킷에서 다른 버킷으로 대량의 데이터를 전송하려면 어떻게 해야 합니까?
Amazon S3에서 다운로드하거나 업로드할 때 속도가 느리거나 불안정한 문제를 해결하려면 어떻게 해야 합니까?