本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用多部分上傳功能將檔案上傳至 Lightsail 儲存貯體
分段上傳可將單個檔案分成幾組分段上傳至儲存貯體。每個組件都是檔案資料的接續部分。您可依任何順序分別上傳這些檔案組件。若任何組件的傳輸失敗,您可再次傳輸該組件,而不會影響其他組件。上傳檔案的所有部分之後,Amazon S3 會組合這些零件,並在 Amazon Lightsail 的儲存貯體中建立物件。一般而言,當物件大小達到 100 MB 時,應考慮使用分段上傳,而不是以單次操作上傳物件。如需有關儲存貯體的詳細資訊,請參閱物件儲存。
使用分段上傳具備下列優勢:
-
改善傳輸量 - 您可平行上傳各組件以改進傳輸量。
-
快速從任何網路問題復原 - 組件大小若較小,對於重新開始因為網路發生錯誤而上傳失敗的影響可降到最低。
-
隨時間上傳 - 您可以隨時間上傳檔案組件。啟動分段上傳之後,您有 24 小時完成分段上傳。
-
在您知道最終檔案大小前開始上傳 - 您可在建立檔案的同時上傳它。
建議您依照下列方式使用分段上傳:
-
若您透過穩定的高頻寬網路上傳大型檔案,使用分段上傳可同時上傳多個檔案組件以取得多執行緒效能,因而完全善用可用的頻寬使用量。
-
若是透過不穩定的網路進行上傳,使用分段上傳可避免上傳重新開始,因而此更快從網路故障中復原。使用分段上傳時,只有組件中斷才需要重試上傳。不需要重新開始或再次上傳整個檔案。
內容
分段上傳程序
分段上傳是一個三個步驟的程序,使用 Amazon S3 動作將檔案上傳到 Lightsail 中的儲存貯體:
-
您可以使用動作啟CreateMultipartUpload動分段上傳。
-
您可以使用UploadPart動作上載檔案部分。
-
您可以使用CompleteMultipartUpload動作完成分段上傳。
注意
您可以在啟動多部分上傳之後,使用AbortMultipartUpload動作來停止它。
當分段上傳請求完成時,Amazon Simple Storage Service 會從上傳的分段中建構物件。然後,您可以使用與存取儲存貯體中任何其他物件相同的方式來存取物件。
您可以列出所有進行中的分段上傳,或是取得特定分段上傳之已上傳組件的清單。本節會一一說明這些操作。
啟動分段上傳
當您傳送請求以啟動分段上傳時,Amazon Simple Storage Service 會傳回具有上傳 ID 的回應。這是分段上傳的唯一識別符。每次上傳各組件、列出各組件、完成上傳或停止上傳時,都必須納入上傳 ID。若您希望提供任何中繼資料,說明正在上傳中的物件,您必須在分段上傳啟動請求中指定中繼資料。
組件上傳
上傳某個分段組件時,除了上傳 ID 之外,還必須指定組件編號。您可選擇 1 到 10,000 之間的任何組件編號。組件編號可找出獨特的某個組件,以及其在上傳中物件內的位置。您選擇的組件編號無須為連續的號碼 (例如,其可為 1、5 和 14)。若使用和前一個上傳組件相同的組件編號上傳新的組件,將會覆寫前一個已上傳的組件。
每當您上傳零件時,Amazon 簡易儲存服務都會在其回應中傳回ETag標頭。對於每個零件上載,您必須記錄零件編號和ETag值。後續的要求中必須包含這些值,才能完成分段上傳。
注意
分段上傳的所有已上傳組件都存放在儲存貯體上。它們會消耗儲存貯體的儲存空間,直到您完成上傳、停止上傳或上傳逾時為止。如需詳細資訊,請參閱本指南稍後的分段上傳保留。
完成分段上傳
當您完成分段上傳時,Amazon Simple Storage Service 會根據分段編號以遞增順序串連各個分段,從而建立物件。分段上傳啟動請求中若已提供任何物件中繼資料,Amazon Simple Storage Service 便會將該中繼資料與物件建立關聯。成功完成請求之後,這些組件就不再存在。
您的完整分段上傳請求必須包含上傳 ID 以及零件編號和對應ETag值的清單。Amazon 簡易儲存服務回應包含可唯ETag一識別合併物件資料的回應。這不一定ETag是對象數據的MD5哈希值。
您也可以選擇性停止分段上傳。停止分段上傳之後,即無法再次使用該上傳 ID 上傳任何組件。之後,取消的分段上傳中的任何部分會釋出所有儲存空間。如有任何分段上傳正在進行,則會在您中止後成功或失敗。若要釋出所有組件所使用之全部的儲存體,您必須在所有上傳組件都已完成後,再停止分段上傳。
分段上傳清單
您可列出特定分段上傳的組件或所有進行中之分段上傳。列出組件操作會傳回特定分段上傳之已上傳組件的資訊。Amazon Simple Storage Service 會為每項列出的分段請求,傳回指定分段上傳的各分段資訊,上限為 1,000 個分段。若分段組件上傳中有超過 1,000 個組件,您必須傳送一連串的列出組件要求,才可擷取所有組件。請注意,傳回的組件清單不包含仍在上傳程序中的組件。使用列出分段上傳操作,即可取得進行中的分段上傳清單。
進行中的分段上傳是您已啟動但尚未完成或已停止的上傳。每個要求最多可傳回 1,000 個分段上傳。若正在進行超過 1,000 個的分段上傳,您必須另行傳送請求以擷取剩餘的分段上傳。僅使用傳回的清單進行驗證。在傳送完成的分段上傳請求時,請勿使用此清單的結果。請改為維護您自己的清單,列出您在上傳零件時指定的零件編號,以及 Amazon 簡單儲存服務傳回的對應ETag值。
並行分段上傳操作
在分散式開發環境中,您的應用程式有可能同時對相同的物件啟動數項更新。您的應用程式可能使用相同的物件金鑰,啟動數項分段上傳。對於每一個上傳,應用程式會上傳各分段,並對 Amazon Simple Storage Service 傳送完整的上傳請求,以建立物件。當儲存貯體啟用版本控制之後,完成分段上傳一律會建立新的版本。對於未啟用版本控制的儲存貯體,可能優先考慮其他請求,例如在分段上傳啟動後與分段上傳完成前收到的請求。
注意
可能優先考慮其他請求,例如在分段上傳啟動後與分段上傳完成前收到的請求。例如,在您透過金鑰啟動分段上傳後,以及分段上傳完成前,另一個操作可能會刪除該金鑰。若發生此情形,完成的分段上傳回應可能顯示物件建立成功,就算您沒有見到該物件也一樣。
分段上傳保留
分段上傳的所有已上傳組件都存放在儲存貯體上。它們會消耗儲存貯體的儲存空間,直到您完成上傳、停止上傳或上傳逾時為止。分段上傳逾時且會在建立後的 24 小時後刪除分段上傳。當您停止分段上傳或其逾時時,所有上傳的組件都會被刪除,並釋出儲存貯體上消耗的儲存空間。
Amazon Simple Storage Service 分段上傳限制
下表提供分段上傳核心規格。
-
物件大小上限:5 TB
-
每次上傳的組件數目上限:10,000
-
組件編號:1 到 10,000 (含)
-
組件大小:5 MB (最小值) - 5 GB (最大值)。您的多段上傳的最後一部分沒有大小限制。
-
列出組件請求的傳回組件數目上限:1,000
-
列出分段上傳請求中傳回的分段上傳數目上限:1,000
分割要上傳的檔案
使用 Linux 或 Unix 作業系統中的 split
命令,以將檔案分割成多個組件,然後上傳至儲存貯體。您可以在 Windows 作業系統中使用類似的免費軟體應用程式來分割檔案。將檔案分割成多個組件後,請繼續前往本指南的啟動分段上傳一節。
使用 AWS CLI啟動分段上傳
完成下列程序以使用 AWS Command Line Interface
(AWS CLI) 啟動分段上傳。您可以使用 create-multipart-upload
命令來執行此動作。若要取得更多資訊,請參閱《指AWS CLI 令參考》create-multipart-upload中的。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入下列命令,以建立儲存貯體的分段上傳。
aws s3api create-multipart-upload --bucket
BucketName
--keyObjectKey
--acl bucket-owner-full-control將命令中的以下範例文字取代為自訂文字:
-
BucketName
-您要為其建立多部分上傳的值區名稱。 -
ObjectKey
-用於您要上傳的檔案的物件金鑰。
範例:
aws s3api create-multipart-upload --bucket
amzn-s3-demo-bucket
--keysailbot.mp4
--acl bucket-owner-full-control您應該會看到類似以下範例的結果。回應包括
UploadID
,您必須在後續命令中指定該 ID,以上傳組件並完成此物件的分段上傳。獲得分段上傳的
UploadID
之後,請繼續本指南的使用 AWS CLI上傳分段章節,並開始上傳各分段。 -
使用上載零件 AWS CLI
完成下列程序以使用 AWS Command Line Interface (AWS CLI) 上傳分段上傳的某分段。您可以使用 upload-part
命令來執行此動作。如需詳細資訊,請參閱《AWS CLI 命令參考》中的 upload-part。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入下列命令,以將組件上傳至儲存貯體。
aws s3api upload-part --bucket
BucketName
--keyObjectKey
--part-numberNumber
--bodyFilePart
--upload-id "UploadID
" --acl bucket-owner-full-control將命令中的以下範例文字取代為自訂文字:
-
BucketName
-您要為其建立多部分上傳的值區名稱。 -
ObjectKey
-用於您要上傳的檔案的物件金鑰。 -
Number
-您要上傳的零件的零件編號。組件編號可找出獨特的某個組件,以及其在上傳中物件內的位置。務必隨您上傳的每個組件逐步增加--part-number
參數。若要這樣做,請在完成分段上傳時,按照 Amazon Simple Storage Service 組裝物件的順序對它們進行編號。 -
FilePart
-要從您的計算機上傳的零件文件。 -
UploadID
-您先前在本指南中建立的多部分上傳的上傳 ID。
範例:
aws s3api upload-part --bucket
amzn-s3-demo-bucket
--keysailbot.mp4
--part-number 1 --bodysailbot.mp4.001
--upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG
" --acl bucket-owner-full-control您應該會看到類似以下範例的結果。為您上傳的每個組件重複
upload-part
命令。每個上傳組件請求的回應包含您所上傳組件的ETag
值。為您上傳的每個組件記錄ETag
值。您需要所有ETag
值以完成分段上傳,本指南稍後會加以說明。 -
列出多部分上傳的部分使用 AWS CLI
完成下列程序以使用 AWS Command Line Interface
(AWS CLI) 列出分段上傳的各部分。您可以使用 list-parts
命令來執行此動作。如需詳細資訊,請參閱《AWS CLI 命令參考》中的 list-parts。
完成此程序以取得在分段上傳中所有己上傳組件的 ETag
值。您需要這些值以完成本指南稍後的分段上傳。不過,如果您從組件上傳的回應記錄所有 ETag
值,則您可以跳過此程序並繼續前往本指南的建立分段上傳 .json 檔案一節。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入以下命令以列出儲存貯體上分段上傳的組件。
aws s3api list-parts --bucket
BucketName
--keyObjectKey
--upload-id "UploadID
"將命令中的以下範例文字取代為自訂文字:
-
BucketName
-您要列出多部分上傳部分的值區名稱。 -
ObjectKey
-多部分上傳的物件索引鍵。 -
UploadID
-您先前在本指南中建立的多部分上傳的上傳 ID。
範例:
aws s3api list-parts --bucket
amzn-s3-demo-bucket
--keysailbot.mp4
--upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG
"您應該會看到類似以下範例的結果。回應會列出所有組件編號和在分段上傳中上傳的組件
ETag
值。將這些值複製到剪貼簿,然後繼續前往本指南的建立分段上傳 .json 一節。 -
建立分段上傳 .json 檔案
完成下列程序以建立分段上傳 .json 檔案,該檔案定義您上傳的所有組件及其 ETag
值。本指南中稍後需要此動作才能完成分段上傳。
-
開啟文字編輯器,並貼上來自您在本指南之前章節中請求的
list-parts
命令的回應。結果應如下列範例所示。
-
重新格式化文字檔案,如下列範例所示:
-
將文字檔儲存至您的電腦
mpstructure.json
,然後使用本指南的AWSCLI章節繼續執行「完成多部分上傳」。
使用完成多部分上傳 AWS CLI
完成下列程序以使用 AWS Command Line Interface
(AWS CLI) 完成分段上傳。您可以使用 complete-multipart-upload
命令來執行此動作。若要取得更多資訊,請參閱《指AWS CLI 令參考》complete-multipart-upload中的。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入下列命令,以將組件上傳至儲存貯體。
aws s3api complete-multipart-upload --multipart-upload file://
JSONFileName
--bucketBucketName
--keyObjectKey
--upload-id "UploadID
" --acl bucket-owner-full-control將命令中的以下範例文字取代為自訂文字:
-
JSONFileName
-您先前在本指南中建立的 .json 檔案名稱 (例如mpstructure.json
)。 -
BucketName
-您要完成多部分上傳的值區名稱。 -
ObjectKey
-多部分上傳的物件索引鍵。 -
UploadID
-您先前在本指南中建立的多部分上傳的上傳 ID。
aws s3api complete-multipart-upload --multipart-upload file://
mpstructure.json
--bucketamzn-s3-demo-bucket
--keysailbot.mp4
--upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG
" --acl bucket-owner-full-control您應該會看到類似於以下範例的回應。這可確認分段上傳已完成。物件現在已組裝並可在儲存貯體中使用。
-
列出值區的多部分上傳內容,使用 AWS CLI
完成下列程序以使用 AWS Command Line Interface (AWS CLI) 列出所有分段上傳。您可以使用 list-multipart-uploads
命令來執行此動作。若要取得更多資訊,請參閱《指AWS CLI 令參考》list-multipart-uploads中的。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入下列命令,以將組件上傳至儲存貯體。
aws s3api list-multipart-uploads --bucket
BucketName
在命令中,替換
BucketName
使用您要列出所有多部分上傳的存儲桶的名稱。範例:
aws s3api list-multipart-uploads --bucket
amzn-s3-demo-bucket
您應該會看到類似於以下範例的回應。
使用停止多部分上傳 AWS CLI
請完成下列程序,以使用 AWS Command Line Interface (AWS CLI) 停止分段上傳。如果您已啟動分段上傳,但不想再繼續上傳,請執行此操作。您可以使用 abort-multipart-upload
命令來執行此動作。若要取得更多資訊,請參閱《指AWS CLI 令參考》abort-multipart-upload中的。
注意
您必須先為 Lightsail AWS CLI 和 Amazon S3 安裝並進行設定,然後才能繼續執行此程序。如需詳細資訊,請參閱設 AWS CLI 定使用 Lightsail。
-
開啟命令提示或終端機視窗。
-
輸入下列命令,以將組件上傳至儲存貯體。
aws s3api abort-multipart-upload --bucket
BucketName
--keyObjectKey
--upload-id "UploadID
" --acl bucket-owner-full-control將命令中的以下範例文字取代為自訂文字:
-
BucketName
-您要停止多部分上傳的值區名稱。 -
ObjectKey
-多部分上傳的物件索引鍵。 -
UploadID
-您要停止的多部分上傳的上傳 ID。
範例:
aws s3api abort-multipart-upload --bucket
amzn-s3-demo-bucket
--keysailbot.mp4
--upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG
" --acl bucket-owner-full-control此命令不會傳回回應。您可以執行
list-multipart-uploads
命令以確認分段上傳已停止。 -