

# マルチパートアップロードの中止
<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 SDK を使用して、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 SDK (高レベル API) の使用
<a name="abort-mpu-high-level"></a>

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

AWS SDK for Java を使用して進行中のマルチパートアップロードを停止する場合、指定した日付より前に開始され、まだ進行中のアップロードを中止できます。アップロードを開始すると、そのアップロードを完了または中止するまで進行中とみなされます。

マルチパートアップロードを停止するには、次の手順を実行します。


|  |  | 
| --- |--- |
| 1 | S3Client インスタンスを作成します。 | 
| 2 | バケット名やその他の必須パラメータを渡して、クライアントの中止方法を使用します。 | 

**注記**  
特定のマルチパートアップロードを中止することもできます。詳細については、「[AWS SDK の使用 (低レベル API)](#abort-mpu-low-level)」を参照してください。

AWS SDK for Java を使用してマルチパートアップロードを中止する方法の例については、「*Amazon S3 API リファレンス*」の「[Cancel a multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_AbortMultipartUpload_section.html)」を参照してください。

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

次の C\# の例では、1 週間以上前に特定のバケットで開始された進行中のマルチパートアップロードをすべて中止します。コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。

```
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 SDK の使用 (低レベル API)](#abort-mpu-low-level) を参照してください。

------

## AWS SDK の使用 (低レベル API)
<a name="abort-mpu-low-level"></a>

`AmazonS3.abortMultipartUpload` メソッドを呼び出すと、進行中のマルチパートアップロードを中止できます。このメソッドは、Amazon S3 にアップロードされたすべてのパートを削除し、リソースを解放します。アップロード ID、バケット名、およびキー名を指定する必要があります。以下の Java コードの例では、進行中のマルチパートアップロードを中止する方法を示します。

マルチパートアップロードを中止するには、アップロード ID とアップロードで使用しているバケット名とキー名を指定します。マルチパートアップロードを中止した後は、同じアップロード ID を使用して追加のパートをアップロードすることはできません。Amazon S3 マルチパートアップロードの詳細については、[Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー](mpuoverview.md) を参照してください。

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

AWS SDK for Java を使用して、特定の進行中のマルチパートアップロードを停止する場合は、低レベル API を使用して、バケット名、オブジェクトキー、アップロード ID を指定することでアップロードを中止できます。

**注記**  
特定のマルチパートアップロードを中止するのではなく、特定の時刻より前に開始され、まだ進行中のマルチパートアップロードをすべて中止することができます。このクリーンアップオペレーションは、開始したが完了または中止していない古いマルチパートアップロードを中止する場合に役に立ちます。詳細については、「[AWS SDK (高レベル API) の使用](#abort-mpu-high-level)」を参照してください。

AWS SDK for Java を使用して特定のマルチパートアップロードを中止する方法の例については、「*Amazon S3 API リファレンス*」の「[Cancel a multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_AbortMultipartUpload_section.html)」を参照してください。

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

次の C\# の例は、マルチパートアップロードを中止する方法を示しています。次のコードを含む完全な C\# のサンプルについては、[AWS SDK の使用 (低レベル 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 SDK (高レベル API) の使用](#abort-mpu-high-level) を参照してください。

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

この例では、バージョン 3 の AWS SDK for PHP のクラスを使用して、進行中のマルチパートアップロードを中止する方法を示します。AWS SDK for Ruby API の詳細については、[AWS SDK for Ruby - バージョン 2](https://docs.aws.amazon.com/sdkforruby/api/index.html) を参照してください。`abortMultipartUpload()` メソッドの例です。

AWS SDK for Ruby API の詳細については、[AWS SDK for Ruby - バージョン 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,
]);
```

------