中止分段上傳 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

中止分段上傳

啟動分段上傳之後,開始上傳組件。Amazon S3 會存放這些組件,但只會在您上傳完所有組件,並傳送 successful 要求以完成分段上傳之後,才從這些組件建立物件 (您應確認完成分段上傳要求是否成功)。收到完成分段上傳的要求時,Amazon S3 就會組合這些組件來建立物件。若未能成功傳送完成分段上傳要求,Amazon S3 就不會組合這些組件,也不會建立任何物件。

系統會向您收取與已上傳部分相關的所有儲存空間費用。如需詳細資訊,請參閱 分段上傳與定價。因此,請務必完成分段上傳以建立物件,或者停止分段上傳,以刪除任何已上傳的部分。

您可以使用 AWS Command Line Interface (AWS CLI)、REST API 或 AWS 開發套件停止在 Amazon S3 中進行中的多部分上傳。您也可以使用儲存貯體生命週期組態停止未完成的分段上傳。

Java

TransferManager 類別提供停止進行中分段上傳的 abortMultipartUploads 方法。啟動上傳後,在尚未完成或停止之前,均視為進行中。您可以提供 Date 值,讓此 API 停止所有在指定之 Date 前對該儲存貯體啟動,並且仍在進行中的分段上傳。

下列工作將引導您使用高階 Java 類別停止分段上傳。

高階 API 的分段上傳停止程序

1

建立 TransferManager 類別的執行個體。

2

傳遞儲存貯體名稱與 Date 值,以執行 TransferManager.abortMultipartUploads 方法。

下列 Java 程式碼會停止一週前,對特定儲存貯體啟動,並且正在進行大的所有分段上傳。如需如何建立及測試工作範例的說明,請參閱「測試 Amazon S3 Java 程式碼範例」。

import java.util.Date; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.transfer.TransferManager; public class AbortMPUUsingHighLevelAPI { public static void main(String[] args) throws Exception { String existingBucketName = "*** Provide existing bucket name ***"; TransferManager tm = new TransferManager(new ProfileCredentialsProvider()); int sevenDays = 1000 * 60 * 60 * 24 * 7; Date oneWeekAgo = new Date(System.currentTimeMillis() - sevenDays); try { tm.abortMultipartUploads(existingBucketName, oneWeekAgo); } catch (AmazonClientException amazonClientException) { System.out.println("Unable to upload file, upload was aborted."); amazonClientException.printStackTrace(); } } }
注意

您也可以停止特定的分段上傳。如需詳細資訊,請參閱 使用 AWS 軟體開發套件 (低階 API)

.NET

下列 C# 範例會示範停止一週前,於指定儲存貯體上開始且正在進行中的所有分段上傳。如需有關範例與特定版本的相容性的資訊,以 AWS SDK for .NET 及建立和測試工作範例的指示,請參閱執行 Amazon S3 .NET 程式碼範例

using Amazon; using Amazon.S3; using Amazon.S3.Transfer; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class AbortMPUUsingHighLevelAPITest { private const string bucketName = "*** provide bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); AbortMPUAsync().Wait(); } private static async Task AbortMPUAsync() { try { var transferUtility = new TransferUtility(s3Client); // Abort all in-progress uploads initiated before the specified date. await transferUtility.AbortMultipartUploadsAsync( bucketName, DateTime.Now.AddDays(-7)); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }
注意

您也可以停止特定的分段上傳。如需詳細資訊,請參閱 使用 AWS 軟體開發套件 (低階 API)

您可呼叫 AmazonS3.abortMultipartUpload 方法,停止進行中的分段上傳。此方法會刪除已上傳至 Amazon S3 的所有部分,並釋出資源。您必須提供上傳 ID、儲存貯體名稱與金鑰名稱。下列 Java 程式碼範例示範如何停止進行中的分段上傳。

若要停止分段上傳,您要提供用於上傳的上傳 ID、儲存貯體和金鑰名稱。在停止分段上傳之後,即無法使用該上傳 ID 上傳其他部分。如需 Amazon S3 分段上傳的詳細資訊,請參閱 使用分段上傳來上傳和複製物件

Java

下列 Java 程式碼範例會停止進行中的分段上傳。

InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(existingBucketName, keyName); InitiateMultipartUploadResult initResponse = s3Client.initiateMultipartUpload(initRequest); AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.abortMultipartUpload(new AbortMultipartUploadRequest( existingBucketName, keyName, initResponse.getUploadId()));
注意

除了特定的分段上傳之外,您也可以停止於特定時間之前啟動且仍在進行中的所有分段上傳。此清除操作有助於停止您已啟動但未完成或停止的舊分段上傳。如需詳細資訊,請參閱 使用 AWS 軟體開發套件 (高階 API)

.NET

下列 C# 範例示範如何停止分段上傳。如需包含下列程式碼的完整 C# 範例,請參閱 使用 AWS 軟體開發套件 (低階 API)

AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest { BucketName = existingBucketName, Key = keyName, UploadId = initResponse.UploadId }; await AmazonS3Client.AbortMultipartUploadAsync(abortMPURequest);

您也可以中止在特定時間之前啟動的所有進行中分段上傳。此清除操作有助於中止未完成或已中止的分段上傳。如需詳細資訊,請參閱 使用 AWS 軟體開發套件 (高階 API)

PHP

此範例顯示如何使用第 3 版中的類別中止 AWS SDK for PHP 進行中的多部分上傳。它假設您已經按照的說明進行操作,使用 AWS SDK for PHP 與執行 PHP 的範例並已 AWS SDK for PHP 正確安裝。範例中使用 abortMultipartUpload() 方法。

如需執行本指南中 PHP 範例的資訊,請參閱「執行 PHP 範例」。

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $uploadId = '*** Upload ID of upload to Abort ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Abort the multipart upload. $s3->abortMultipartUpload([ 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, ]);

如需有關使用 REST API 停止多部分上傳的詳細資訊,請參閱 Amazon 簡單儲存服務 API 參考AbortMultipartUpload中的。

如需有關使用停止多部分上傳 AWS CLI 的詳細資訊,請參閱《AWS CLI 命令參考abort-multipart-upload中的〈〉。