Amazon S3에서 동기화 명령의 전송 성능을 개선하려면 어떻게 해야 하나요?

3분 분량
0

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

해결 방법

동기화 명령은 소스 버킷과 대상 버킷을 비교하여 대상 버킷에 존재하지 않는 소스 파일을 확인합니다. 또 동기화 명령은 대상 버킷의 파일과 비교해 어떤 소스 파일이 수정되었는지 확인합니다. 그런 다음 새 소스 파일이나 업데이트된 소스 파일을 대상 버킷에 복사합니다.

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

삭제 마커는 목록 성능에도 영향을 미치므로 삭제 마커 수를 최소화하는 것이 좋습니다. 동기화 명령은 백엔드에서 목록 API 호출을 실행하므로 삭제 마커는 동기화 명령의 성능에도 영향을 미칩니다.

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

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

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

또는 별도의 제외 및 포함 필터에 병렬 동기화 작업을 실행합니다. 예를 들어, 다음 작업은 숫자 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*"

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

max_concurrent_requests에 AWS CLI 구성 값 수정

잠재적으로 성능을 개선하기 위해 max_concurrent_requests의 값을 수정합니다. 이 값은 한 번에 Amazon S3로 전송할 수 있는 요청 수를 설정합니다. 기본값은 10이며 더 높은 값으로 지정할 수 있습니다. 하지만 다음과 같은 제한 사항에 유의해야 합니다.

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

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

Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스를 사용하여 동기화 작업을 실행하는 경우 다음 모범 사례를 이용합니다.

  • 인스턴스 유형을 검토합니다. 큰 인스턴스 유형일수록 높은 대역폭과 Amazon Elastic Block Store(Amazon EBS)에 최적화된 네트워크를 가지고 있기 때문에 더 나은 결과를 제공할 수 있습니다.
  • 인스턴스가 버킷과 다른 AWS 리전에 있는 경우, 동일한 리전에 있는 인스턴스를 사용하세요. 대기 시간을 줄이려면 인스턴스와 Amazon S3 버킷 사이의 지리적 거리를 줄이세요.
  • 인스턴스가 소스 버킷과 동일한 리전에 있는 경우, S3에 Amazon Virtual Private Cloud(VPC) 엔드포인트를 설정합니다. VPC 엔드포인트는 전반적인 성능을 개선하는 데 도움이 될 수 있습니다.

관련 정보

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

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

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

관련 콘텐츠