本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中止分段上傳
啟動分段上傳之後,開始上傳組件。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
-
此
TransferManager
類別提供停止進行中分段上傳的abortMultipartUploads
方法。啟動上傳後,在尚未完成或停止之前,均視為進行中。您可以提供Date
值,讓此 API 停止所有在指定之Date
前對該儲存貯體啟動,並且仍在進行中的分段上傳。下列工作將引導您使用高階 Java 類別停止分段上傳。
高階 API 的分段上傳停止程序
1
建立
TransferManager
類別的執行個體。2
傳遞儲存貯體名稱與
Date
值,以執行TransferManager.abortMultipartUploads
方法。下列 Java 程式碼會停止一週前,對特定儲存貯體啟動,並且正在進行大的所有分段上傳。如需如何建立和測試工作範例的說明,請參閱《 適用於 Java 的 AWS SDK 開發人員指南》中的入門。
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 SDKs(低階 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 程式碼範例會停止進行中的分段上傳。
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 SDKs(高階 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, ]);