中止分段上傳 - Amazon Simple Storage Service

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

中止分段上傳

啟動分段上傳之後,開始上傳組件。Amazon S3 會儲存這些組件,而且只有在您上傳所有組件並傳送完成分段上傳的請求之後,才會建立物件。收到完成分段上傳的要求時,Amazon S3 就會組合這些組件來建立物件。如果未能成功傳送完成分段上傳請求,S3 就不會組合這些組件,也不會建立任何物件。如果您在上傳組件之後不想完成分段上傳,您應該中止分段上傳。

系統會向您收取與已上傳部分相關的所有儲存空間費用。建議一律完成分段上傳或停止分段上傳,以移除任何上傳的組件。如需定價的詳細資訊,請參閱 分段上傳與定價

您也可以使用儲存貯體生命週期組態停止未完成的分段上傳。如需詳細資訊,請參閱設定儲存貯體生命週期組態,以刪除不完整的分段上傳

下一節說明如何使用 AWS Command Line Interface、REST API 或 AWS SDKs 在 Amazon S3 中停止進行中的分段上傳。

如需使用 AWS CLI 停止分段上傳的詳細資訊,請參閱《 AWS CLI 命令參考》中的 abort-multipart-upload

如需使用 REST API 停止分段上傳的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 AbortMultiPartupLoad

Java

若要使用適用於 Java 的 AWS SDK 停止進行中的分段上傳,您可以中止在指定日期之前啟動且仍在進行中的上傳。啟動上傳後,在尚未完成或停止之前,均視為進行中。

若要停止分段上傳,您可以:

1

建立 S3Client 執行個體。

2

透過傳遞儲存貯體名稱和其他必要參數,使用用戶端的中止方法。

注意

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

如需如何使用適用於 Java 的 AWS SDK 中止分段上傳的範例,請參閱《Amazon S3 API 參考》中的取消分段上傳

.NET

下列 C# 範例會示範停止一週前,於指定儲存貯體上開始且正在進行中的所有分段上傳。如需有關設定和執行程式碼範例的資訊,請參閱《適用於 .NET 的 AWS SDK 開發人員指南》中的適用於 .NET 的 SDK 入門AWS

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 SDKs(低階 API)

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

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

Java

若要使用適用於 Java 的 AWS SDK 停止特定的進行中分段上傳,您可以使用低階 API,提供儲存貯體名稱、物件金鑰和上傳 ID 來中止上傳。

注意

您可以停止在特定時間之前啟動的所有分段上傳,而不是中止特定的分段上傳。此清除操作有助於停止您已啟動但未完成或停止的舊分段上傳。如需詳細資訊,請參閱使用 AWS SDKs(高階 API)

如需如何使用適用於 Java 的 AWS SDK 中止特定分段上傳的範例,請參閱《Amazon S3 API 參考》中的取消分段上傳

.NET

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

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

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

PHP

此範例示範如何使用 適用於 PHP 的 AWS SDK 第 3 版中的類別來中止進行中的分段上傳。如需適用於 Ruby 的 AWS SDK API 的詳細資訊,請前往AWS 適用於 Ruby 的 SDK - 第 2 版。範例中使用 abortMultipartUpload() 方法。

如需適用於 Ruby 的 AWS SDK API 的詳細資訊,請前往AWS 適用於 Ruby 的 SDK - 第 2 版

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, ]);