此頁面僅適用於使用文件庫的 S3 Glacier 服務的現有客戶,並且是 2012 年RESTAPI起的原始客戶。
如果您正在尋找存檔儲存解決方案,我們建議您使用 Amazon S3 中的 S3 Glacier 儲存類別、S3 冰川即時擷取、S3 冰川彈性擷取和 S3 Glacier Deep Archive。若要進一步了解這些儲存選項,請參閱 Amazon S3 使用者指南中的 S3 Glacier 儲存類
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭UploadMultipartPart
配 AWS SDK或使用 CLI
下列程式碼範例會示範如何使用UploadMultipartPart
。
- CLI
-
- AWS CLI
-
下列命令會上傳封存的前 1 MiB (1024 x 1024 位元組) 部分:
aws glacier upload-multipart-part --body
part1
--range 'bytes 0-1048575/*
'-
-account-id - --vault-namemy-vault
--upload-id19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ
Amazon Glacier 在執行操作時需要帳戶 ID 引數,但您可以使用連字號來指定使用中的帳戶。
內文參數會取得本機檔案系統上分段檔案的路徑。range 參數採用HTTP內容範圍,指示零件在完成的歸檔中佔用的位元組。上傳 ID 由
aws glacier initiate-multipart-upload
命令傳回,也可以透過aws glacier list-multipart-uploads
獲取。如需使用分段上傳至 Amazon Glacier 的詳細資訊 AWS CLI,請參閱使用AWS CLI者指南中的使用 Amazon Glacier。
-
如需詳API細資訊,請參閱AWS CLI 指令參考UploadMultipartPart
中的。
-
- JavaScript
-
- SDK對於 JavaScript (第 2 個)
-
注意
還有更多關於 GitHub。尋找完整範例,並了解如何在AWS 設定和執行程式碼範例儲存庫
。 建立 Buffer 物件 1 MB 區塊的分段上傳。
// Create a new service object and some supporting variables var glacier = new AWS.Glacier({ apiVersion: "2012-06-01" }), vaultName = "YOUR_VAULT_NAME", buffer = new Buffer(2.5 * 1024 * 1024), // 2.5MB buffer partSize = 1024 * 1024, // 1MB chunks, numPartsLeft = Math.ceil(buffer.length / partSize), startTime = new Date(), params = { vaultName: vaultName, partSize: partSize.toString() }; // Compute the complete SHA-256 tree hash so we can pass it // to completeMultipartUpload request at the end var treeHash = glacier.computeChecksums(buffer).treeHash; // Initiate the multipart upload console.log("Initiating upload to", vaultName); // Call Glacier to initiate the upload. glacier.initiateMultipartUpload(params, function (mpErr, multipart) { if (mpErr) { console.log("Error!", mpErr.stack); return; } console.log("Got upload ID", multipart.uploadId); // Grab each partSize chunk and upload it as a part for (var i = 0; i < buffer.length; i += partSize) { var end = Math.min(i + partSize, buffer.length), partParams = { vaultName: vaultName, uploadId: multipart.uploadId, range: "bytes " + i + "-" + (end - 1) + "/*", body: buffer.slice(i, end), }; // Send a single part console.log("Uploading part", i, "=", partParams.range); glacier.uploadMultipartPart(partParams, function (multiErr, mData) { if (multiErr) return; console.log("Completed part", this.request.params.range); if (--numPartsLeft > 0) return; // complete only when all parts uploaded var doneParams = { vaultName: vaultName, uploadId: multipart.uploadId, archiveSize: buffer.length.toString(), checksum: treeHash, // the computed tree hash }; console.log("Completing upload..."); glacier.completeMultipartUpload(doneParams, function (err, data) { if (err) { console.log("An error occurred while uploading the archive"); console.log(err); } else { var delta = (new Date() - startTime) / 1000; console.log("Completed upload in", delta, "seconds"); console.log("Archive ID:", data.archiveId); console.log("Checksum: ", data.checksum); } }); }); } });
-
如需詳細資訊,請參閱《AWS SDK for JavaScript 開發人員指南》。
-
如需詳API細資訊,請參閱AWS SDK for JavaScript API參考UploadMultipartPart中的。
-
如需 AWS SDK開發人員指南和程式碼範例的完整清單,請參閱搭配 AWS 開發套件使用 S3 冰川。本主題也包含有關入門的資訊以及舊SDK版的詳細資訊。