簡體   English   中英

Amazon S3 - 分段上傳vs分割文件 - 然后上傳

[英]Amazon S3 - multipart upload vs split files-then-upload

我目前正在嘗試使用python將文件從本地上傳到S3。 我有非常大的文件(超過10 GB),當我通過一些最佳實踐來加快上傳時,我遇到了分段上傳。 如果我理解正確,分段上傳會做以下事情:

  1. 將文件拆分為多個塊。
  2. 將每個塊上傳到S3(根據我們的代碼串行或並行)。
  3. 一旦上傳了這些組塊中的每一個,S3就會將各個組塊最終組裝成單個最終對象/文件。

因為,在所有塊的上載結束之后,很明顯多部分上傳將所有內容組裝成單個對象。 但是,我希望保持各個部分不變,或者找到另一種方法來分割文件並使用python boto的put_object方法上傳。 這是因為,我希望從S3並行讀取文件的各個塊/部分以供我進一步處理。 有沒有辦法做到這一點,或者我應該堅持自己拆分文件並將其並行上傳(以便更快上傳)的傳統方式。

提前致謝。

我們遇到了同樣的問題,這是我們采取的方法。

啟用傳輸加速

你的水桶。

https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

如果您的上傳帶寬有限,則拆分文件沒有意義。

如果您擁有巨大的上傳帶寬且單個加速端點不占用整個上傳帶寬,則可以拆分文件並使用multipart上傳它們。

使用multiparts上傳單個S3對象/文件:

以下鏈接中包含詳細說明。

https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/

創建分段上傳:

aws s3api create-multipart-upload --bucket multirecv --key testfile --metadata md5 = mvhFZXpr7J5u0ooXDoZ / 4Q ==

上傳文件部分:

AWS s3api上傳部分--bucket multirecv --key testfile的--Part數1 --body testfile.001 --upload-ID sDCDOJiTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk --content-MD5 Vuoo2L6aAmjr + 4sRXUwf0w ==

完成上傳:

aws s3api list-parts --bucket multirecv --key testfile --upload-id sDCDOJiTUVGeKAk3Ob7qMynRKqe3ROcavPRw9522AA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk

希望能幫助到你。

EDIT1

從S3部分閱讀:

使用S3,您無需讀取完整對象。 您可以指定對象的起始范圍和結束范圍。 您不需要在S3中維護拆分。 您可以維護為單個對象。 下面的命令將幫助您部分閱讀它。

還有一個好處是,您也可以平行閱讀它們。

aws s3api get-object --bucket my_bucket --key object / location / file.txt file1.range-1000-2000.txt --range bytes = 1000-2000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM