AWS Command Line Interface(AWS CLI)를 사용하여 대용량 파일(1GB 이상)을 Amazon Simple Storage Service(Amazon S3)에 업로드할 경우 성능을 최적화하려고 합니다.
간략한 설명
Amazon S3에 대용량 파일을 업로드하는 경우 멀티파트 업로드를 사용하는 것이 모범 사례입니다. 또한 멀티파트 업로드에 대한 객체 크기 임계값을 구성합니다. AWS CLI를 사용하여 파일을 업로드할 경우 모든 상위 수준 aws s3 명령은 객체 크기가 임계값을 초과하면 자동으로 멀티파트 업로드를 수행합니다. 이러한 상위 수준 명령에는 aws s3 cp 및 aws s3 sync가 포함됩니다.
성능을 최적화하려면 다음 방법 중 하나를 선택하십시오.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
옵션 1: CRT 기반 클라이언트를 AWS CLI와 함께 사용
CRT 기반 클라이언트를 사용하려면 다음 단계를 완료하십시오.
-
AWS CLI 구성 파일에 preferred_transfer_client를 추가합니다.
[default]s3 =
preferred_transfer_client = crt
또는 configure 명령을 실행합니다.
aws configure set default.s3.preferred_transfer_client crt
-
cp 명령을 실행하여 CRT 클라이언트가 활성 상태인지 확인합니다.
aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt
CRT 클라이언트가 활성 상태인 경우의 출력 예:
aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt
\[DEBUG\] \[2025-12-01T07:58:46Z\] \[00007fe20f9b9340\] \[tls-handler\] - Set security policy to AWS-CRT-SDK-TLSv1.0-2025-PQ (minimum\_tls\_version: 128; cipher\_pref: 0)
2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Recommended CRT throughput target in gbps: None
2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Using CRT throughput target in gbps: 10.0
-
(선택 사항) target_bandwidth를 설정하여 최대 처리량을 제어합니다. AWS CLI 구성 파일에 target_bandwidth 값을 추가합니다.
\[default\]
s3 =
preferred\_transfer\_client = crt
target\_bandwidth = 1Gb/s
또는 configure 명령을 실행합니다.
aws configure set default.s3.target_bandwidth 1Gb/s
참고: 특정 대역폭 요구 사항이 있는 경우에만 이를 구성하십시오. AWS CLI는 시스템 기능에 따라 대역폭을 자동으로 최적화합니다. 이 값을 잘못 구성하면 네트워크 또는 시스템 리소스가 과부하될 수 있습니다. 이 옵션은 null로 두는 것이 모범 사례입니다.
CRT 기반 클라이언트를 활성화하면 AWS CLI가 자동으로 클라이언트를 사용하여 파일을 업로드합니다. 그러면 특히 대용량 파일 업로드 시 표준 AWS CLI에 비해 성능과 신뢰성이 개선됩니다.
다음 파라미터를 사용하여 멀티파트 업로드를 사용자 지정합니다.
| 파라미터 | 설명 | 기본값 | 권장 사항 |
|---|
| max_bandwidth | Amazon S3에 데이터를 업로드하기 위한 최대 대역폭 | 없음(무제한) | 네트워크 포화를 방지하도록 설정합니다. |
| max_concurrent_requests | Amazon S3에 대한 동시 요청 수 | 10 | 시스템 리소스가 충분한 고대역폭 연결의 경우 20~50으로 늘립니다. |
| max_queue_size | 전송 대기열의 최대 작업 수 | 1,000 | 파일이 많은 배치 작업의 경우 늘립니다. |
| multipart_chunksize | 업로드된 각 파트의 크기 | 8MB | 1GB보다 크고 청크가 10,000개 미만인 파일의 경우 16~64MB로 늘립니다. |
| multipart_threshold | 멀티파트 업로드를 트리거하는 파일 크기 | 8MB | 대부분의 [?] 사용 사례에서 기본값을 유지합니다. |
참고: 시스템에 필요한 최대 동시 요청 수를 지원할 수 있는 충분한 리소스가 있는지 확인하십시오.
옵션 2: S3 Transfer Acceleration 활성화
Amazon S3 Transfer Acceleration은 클라이언트와 Amazon S3 간에 빠르고 안전한 장거리 전송을 제공합니다. Transfer Acceleration은 전역적으로 분산된 Amazon CloudFront의 엣지 로케이션을 사용합니다.
Transfer Acceleration은 추가 요금이 발생하므로 반드시 요금을 검토하십시오. Transfer Acceleration이 사용 사례의 전송 속도를 개선하는지 확인하려면 Amazon S3 Transfer Acceleration 속도 비교 도구를 검토하십시오.
참고: Transfer Acceleration은 AWS 리전 간 CopyObject 복사를 지원하지 않습니다.
Amazon S3 Transfer Acceleration을 활성화하려면 다음 단계를 완료하십시오.
-
버킷의 S3 Transfer Acceleration을 활성화합니다.
-
단일 파일 전송의 가속화된 엔드포인트를 지정합니다.
aws s3 cp large-file.zip s3://your-bucket-name/ --endpoint-url https://s3-accelerate.amazonaws.com
또는 CLI 구성 파일에서 엔드포인트를 구성하여 모든 파일 전송에 적용합니다.
\[default\]
s3 =
use\_accelerate\_endpoint = true
관련 정보
AWS CLI S3 구성
AWS Command Line Interface란 무엇입니까?