當我使用 AWS CLI 將大型檔案上傳到 Amazon S3 時,如何最佳化效能?
我想要最佳化使用 AWS Command Line Interface (AWS CLI) 將大型檔案 (1 GB 或更大) 上傳到 Amazon Simple Storage Service (Amazon S3) 時的效能。
簡短說明
如果您將大型檔案上傳至 Amazon S3,則最佳實務是使用分段上傳。此外,請設定分段上傳的物件大小閾值。當您使用 AWS CLI 上傳檔案時,所有高階 aws s3 命令會在物件大小超過閾值時自動執行分段上傳。這些高階命令包括 aws s3 cp 和 aws s3 sync。
若要最佳化效能,請選擇以下其中一種方法:
- 使用 AWS Common Runtime (CRT) 型用戶端,然後自訂分段上傳組態。針對大規模資料傳輸或複雜工作負載使用此方法。
- 啟用 Amazon S3 Transfer Acceleration。針對地理位置相距遙遠的傳輸使用此方法。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
選項 1: 將 CRT 型用戶端與 AWS CLI 搭配使用
若要使用 CRT 型用戶端,請完成以下步驟:
-
將 preferred_transfer_client 新增至 AWS CLI 組態檔案:
[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 crtCRT 用戶端啟動時的輸出範例:
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 以控制最大輸送量。將 target_bandwidth 值新增至 AWS CLI 組態檔案:
\[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 | 每個上傳部分的大小 | 8 MB | 對於大於 1 GB 的檔案,增加至 16-64 MB,且區塊數量少於 10,000 個。 |
| multipart_threshold | 觸發分段上傳的檔案大小 | 8 MB | 對於大多數 [?] 使用案例,請保留預設值。 |
**注意:**請檢查您的機器是否有足夠的資源,可支援您需要的並行請求最大數量。
選項 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
相關資訊
相關內容
已提問 2 年前
已提問 1 年前
已提問 4 年前

