AWS Command Line Interface(AWS CLI) 동기화 명령을 사용하여 Amazon Simple Storage Service(S3)에서 데이터를 전송하고자 합니다. 하지만 전송을 완료하는 데 시간이 오래 걸립니다.
간략한 설명
소스 버킷과 대상 버킷에 있는 객체 수는 sync 명령이 프로세스를 완료하는 데 걸리는 시간에 영향을 줄 수 있습니다. 전송 크기는 동기화 기간 및 Amazon S3에 대한 요청 비용에 영향을 줄 수 있습니다.
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
만료된 삭제 마커 제거
sync 명령은 백엔드에서 목록 API 직접 호출을 실행하므로 삭제 마커는 sync 명령의 성능에 영향을 미칩니다. 삭제 마커 수를 최소화하는 것이 가장 좋습니다. S3 수명 주기 구성 규칙을 사용하여 버전 관리가 활성화된 버킷에서 만료된 삭제 마커를 자동으로 제거할 수 있습니다.
여러 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 성능 최적화를 참조하십시오.
S3 Transfer Acceleration 활성화
S3 Transfer Acceleration을 사용하여 전송 속도를 개선하십시오.
S3 Transfer Acceleration 요금을 검토하려면 Amazon S3 요금 페이지에서 데이터 전송 탭을 선택합니다. S3 Transfer Acceleration이 전송 속도를 개선하는지 확인하려면 Amazon S3 Transfer Acceleration 속도 비교 도구를 사용하십시오.
참고: S3 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로 설정하여 효율적인 업로드와 관리 가능한 파트 크기 사이의 균형을 맞추는 것도 좋습니다.
(선택 사항) Amazon EC2 인스턴스 구성 확인
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 동기화를 실행하는 경우 다음 모범 사례를 사용하여 성능을 개선하십시오.
관련 정보
S3 버킷과 EC2 인스턴스 간에 데이터를 복사할 때 전송 속도를 높이려면 어떻게 해야 합니까?
Amazon S3 버킷에서 다른 버킷으로 대량의 데이터를 전송하려면 어떻게 해야 합니까?
온프레미스 클라이언트에서 Amazon S3로 데이터를 다운로드하거나 업로드할 때 속도가 느리거나 일관되지 않은 문제를 해결하려면 어떻게 해야 합니까?