マルチパートアップロードの中止 - Amazon Simple Storage Service

マルチパートアップロードの中止

マルチパートアップロードを開始したら、パートをアップロードし始めます。Amazon S3 にはこれらのパートが保存されますが、それらのパートをすべてアップロードし、successful リクエストを送信してマルチパートアップロードを完了した場合のみオブジェクトが作成されます (マルチパートアップロードの完了リクエストが成功したことを確認してください)。マルチパートアップロードの完了リクエストを受け取ると、Amazon S3 はパートを組み立ててオブジェクトを作成します。マルチパートアップロードの完了リクエストが正常に送信されなかった場合、Amazon S3 はパートを組み立てず、オブジェクトも作成しません。

アップロードされたパートに関連のあるすべてのストレージに対して料金が請求されます。詳細については、「マルチパートアップロードと料金」を参照してください。そのため、マルチパートアップロードを完了してオブジェクトを作成するか、マルチパートアップロードを停止してアップロードされたパートを削除することが重要です。

AWS コマンドラインインターフェイス (AWS CLI)、REST API、または AWS SDK を使用して、Amazon S3 で進行中のマルチパートアップロードを中止できます。バケットライフサイクルポリシーを使用して、完了しないマルチパートアップロードを中止することもできます。

Java

TransferManager クラスは、進行中のマルチパートアップロードを中止する abortMultipartUploads メソッドを提供します。アップロードを開始すると、そのアップロードを完了または中止するまで進行中とみなされます。Date 値を指定すると、この API が、そのバケットで指定した Date の前に開始された進行中のすべてのマルチパートアップロードを中止します。

以下のタスクでは、高レベル Java クラスを使用してマルチパートアップロードを中止する手順を説明します。

高レベル API のマルチパートアップロード中止プロセス

1

TransferManager クラスのインスタンスを作成します。

2

バケット名および TransferManager.abortMultipartUploads 値を渡して Date メソッドを実行します。

次の Java コードでは、1 週間以上前に特定のバケットで開始された進行中のマルチパートアップロードをすべて中止します。作業サンプルを作成およびテストする方法については、「Amazon S3 Java コード例のテスト」を参照してください。

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 SDK の使用 (低レベル API)」を参照してください。

.NET

次の C# の例では、1 週間以上前に特定のバケットで開始された進行中のマルチパートアップロードをすべて中止します。この例と AWS SDK for .NET の特定のバージョンとの互換性、および作業サンプルを作成してテストする手順の詳細については、「Amazon S3 .NET コード例の実行」を参照してください。

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)」を参照してください。

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

マルチパートアップロードを中止するには、アップロード ID とアップロードで使用しているバケット名とキー名を指定します。マルチパートアップロードを中止した後は、同じアップロード ID を使用して追加のパートをアップロードすることはできません。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 SDK (高レベル API) の使用」を参照してください。

.NET

次の C# の例は、マルチパートアップロードを中止する方法を示しています。次のコードを含む完全な C# のサンプルについては、「AWS SDK の使用 (低レベル API)」を参照してください。

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

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

PHP

この例では、バージョン 3 の AWS SDK for PHP のクラスを使用して、進行中のマルチパートアップロードを中止する方法を示します。このトピックでは、「AWS SDK for PHP の使用と PHP の実行例」の説明に既に従っていて、AWS SDK for PHP が正しくインストールされていることを前提としています。abortMultipartUpload() メソッドの例です。

PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

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

REST API を使用してマルチパートアップロードを中止する方法の詳細については、Amazon Simple Storage Service API リファレンスの「AbortMultiPartUpload」を参照してください。

AWS CLI を使用してマルチパートアップロードを中止する方法の詳細については、AWS CLI コマンドリファレンスの「abort-multipart-upload」を参照してください。