我想上傳大量資料到 Amazon Simple Storage Service (Amazon S3),或在 S3 儲存貯體之間複製大量資料。我想將此類資料傳輸的效能最佳化。
解決方法
在 Amazon S3 儲存貯體上進行大量資料傳輸時,不論是輸入或輸出,請使用下列其中一個方法。
使用 AWS Command Line Interface (AWS CLI) 進行平行上傳
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確認您使用的是最新版本的 AWS CLI。
若要盡可能縮短完成傳輸所需的整體時間,請將傳輸作業分割為多個互斥的作業。您可以同時執行 aws s3 cp (複製)、aws s3 mv (移動) 或 aws s3 sync (同步) 的多個執行個體。
分割傳輸的一種方法是使用 --exclude 和 --include 參數,依照檔案名稱區分作業。例如,如果您需要將大量資料從一個儲存貯體複製到另一個儲存貯體,且所有檔案名稱都以數字開頭,則可以在兩個 AWS CLI 執行個體上執行下列命令。
注意:****--exclude 和 --include 參數是在客戶端處理。因此,本機電腦的資源可能會影響作業效能。
執行此命令來複製名稱開頭為數字 0 到 4 的檔案:
aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"
執行此命令來複製名稱開頭為數字 5 到 9 的檔案:
aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"
**重要事項:**如果您需要傳輸非常大量的物件 (數億個),請考慮使用 AWS SDK 建立自訂應用程式來執行複製。雖然 AWS CLI 可以執行複製,但自訂應用程式在該擴展下可能會更有效率。
AWS Snowball
請考慮使用 AWS Snowball 在現場部署資料中心和 Amazon S3 之間進行傳輸,尤其是當資料超過 10 TB 時。
請注意下列限制:
- AWS Snowball 不支援儲存貯體到儲存貯體的資料傳輸。
- AWS Snowball 不支援使用 AWS Key Management System (AWS KMS) 管理的金鑰進行伺服器端加密。如需詳細資訊,請參閱 AWS Snowball 中的伺服器端加密。
S3DistCp 搭配 Amazon EMR
請考慮使用 S3DistCp 搭配 Amazon EMR,在 Amazon S3 儲存貯體之間複製資料。S3DistCp 能夠平行複製大量物件。
重要事項: 由於此選項需要您啟動 Amazon EMR 叢集,因此請務必檢閱 Amazon EMR 定價。
相關資訊
請求率和效能準則