跳至內容

當我使用 AWS CLI 將大型檔案上傳到 Amazon S3 時,如何最佳化效能?

2 分的閱讀內容
0

我想要最佳化使用 AWS Command Line Interface (AWS CLI) 將大型檔案 (1 GB 或更大) 上傳到 Amazon Simple Storage Service (Amazon S3) 時的效能。

簡短說明

如果您將大型檔案上傳至 Amazon S3,則最佳實務是使用分段上傳。此外,請設定分段上傳的物件大小閾值。當您使用 AWS CLI 上傳檔案時,所有高階 aws s3 命令會在物件大小超過閾值時自動執行分段上傳。這些高階命令包括 aws s3 cpaws s3 sync

若要最佳化效能,請選擇以下其中一種方法:

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

選項 1: 將 CRT 型用戶端與 AWS CLI 搭配使用

若要使用 CRT 型用戶端,請完成以下步驟:

  1. preferred_transfer_client 新增至 AWS CLI 組態檔案:

    [default]s3 =
    preferred_transfer_client = crt

    或者,執行 configure 命令:

    aws configure set default.s3.preferred_transfer_client crt
  2. 執行 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
  3. (選用) 設定 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,請完成以下步驟:

  1. 為您的儲存貯體開啟 S3 Transfer Acceleration

  2. 為單一檔案傳輸指定加速端點:

    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?

AWS 官方已更新 7 個月前