本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中止分段上傳
啟動分段上傳之後,開始上傳組件。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 |
透過傳遞儲存貯體名稱和其他必要參數,使用用戶端的中止方法。 |
如需如何使用適用於 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);
}
}
}
}
您可呼叫 AmazonS3.abortMultipartUpload
方法,停止進行中的分段上傳。此方法會刪除已上傳至 Amazon S3 的所有部分,並釋出資源。您必須提供上傳 ID、儲存貯體名稱與金鑰名稱。下列 Java 程式碼範例示範如何停止進行中的分段上傳。
若要停止分段上傳,您要提供用於上傳的上傳 ID、儲存貯體和金鑰名稱。在停止分段上傳之後,即無法使用該上傳 ID 上傳其他部分。如需 Amazon S3 分段上傳的詳細資訊,請參閱 在 Amazon S3 中使用分段上傳來上傳和複製物件。
- Java
-
若要使用適用於 Java 的 AWS SDK 停止特定的進行中分段上傳,您可以使用低階 API,提供儲存貯體名稱、物件金鑰和上傳 ID 來中止上傳。
如需如何使用適用於 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,
]);