

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

# 中止分段上傳
<a name="abort-mpu"></a>

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

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

您也可以使用儲存貯體生命週期組態停止未完成的分段上傳。如需詳細資訊，請參閱[設定儲存貯體生命週期組態，以刪除不完整的分段上傳](mpu-abort-incomplete-mpu-lifecycle-config.md)。

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

## 使用 AWS CLI
<a name="abort-mpu-cli"></a>

如需使用 AWS CLI 停止分段上傳的詳細資訊，請參閱《 *AWS CLI 命令參考*》中的 [abort-multipart-upload](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/abort-multipart-upload.html)。

## 使用 REST API
<a name="abort-mpu-rest"></a>

如需使用 REST API 停止分段上傳的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [AbortMultiPartupLoad](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)。

## 使用 AWS SDKs（高階 API)
<a name="abort-mpu-high-level"></a>

------
#### [ Java ]

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

若要停止分段上傳，您可以：


|  |  | 
| --- |--- |
| 1 | 建立 S3Client 執行個體。 | 
| 2 | 傳遞儲存貯體名稱和其他必要參數，藉此可使用用戶端的中止方法。 | 

**注意**  
您也可以停止特定的分段上傳。如需詳細資訊，請參閱[使用 AWS SDKs（低階 API)](#abort-mpu-low-level)。

如需如何使用適用於 Java 的 AWS SDK 中止分段上傳的範例，請參閱《*Amazon S3 API 參考*》中的[取消分段上傳](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_AbortMultipartUpload_section.html)。

------
#### [ .NET ]

下列 C\$1 範例會示範停止一週前，於指定儲存貯體上開始且正在進行中的所有分段上傳。如需有關設定和執行程式碼範例的資訊，請參閱《[適用於 .NET 的 AWS SDK 開發人員指南》中的適用於 .NET 的 SDK 入門](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)。 *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)](#abort-mpu-low-level)。

------

## 使用 AWS SDKs（低階 API)
<a name="abort-mpu-low-level"></a>

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

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

------
#### [ Java ]

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

**注意**  
您可以停止在特定時間之前啟動，且仍在進行中的所有分段上傳，而不是中止特定的分段上傳。此清除操作有助於停止您已啟動但未完成或停止的舊分段上傳。如需詳細資訊，請參閱[使用 AWS SDKs（高階 API)](#abort-mpu-high-level)。

如需如何使用適用於 Java 的 AWS SDK 中止特定分段上傳的範例，請參閱《*Amazon S3 API 參考*》中的[取消分段上傳](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_AbortMultipartUpload_section.html)。

------
#### [ .NET ]

下列 C\$1 範例示範如何停止分段上傳。如需包含下列程式碼的完整 C\$1 範例，請參閱 [使用 AWS SDKs（低階 API)](mpu-upload-object.md#mpu-upload-low-level)。

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

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

------
#### [ PHP ]

此範例示範如何使用 適用於 PHP 的 AWS SDK 第 3 版中的類別來中止進行中的分段上傳。如需適用於 Ruby 的 AWS SDK API 的詳細資訊，請前往[AWS 適用於 Ruby 的 SDK - 第 2 版](https://docs.aws.amazon.com/sdkforruby/api/index.html)。範例中使用 `abortMultipartUpload()` 方法。

如需適用於 Ruby 的 AWS SDK API 的詳細資訊，請前往[AWS 適用於 Ruby 的 SDK - 第 2 版](https://docs.aws.amazon.com/sdkforruby/api/index.html)。

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

------