マルチパートアップロードの中止
マルチパートアップロードを開始したら、パートをアップロードし始めます。Amazon S3 にはこれらのパートが保存されますが、それらのパートをすべてアップロードし、successful
リクエストを送信してマルチパートアップロードを完了した場合のみオブジェクトが作成されます (マルチパートアップロードの完了リクエストが成功したことを確認してください)。マルチパートアップロードの完了リクエストを受け取ると、Amazon S3 はパートを組み立ててオブジェクトを作成します。マルチパートアップロードの完了リクエストが正常に送信されなかった場合、Amazon S3 はパートを組み立てず、オブジェクトも作成しません。
アップロードされたパートに関連のあるすべてのストレージに対して料金が請求されます。詳細については、マルチパートアップロードと料金 を参照してください。そのため、マルチパートアップロードを完了してオブジェクトを作成するか、マルチパートアップロードを停止してアップロードされたパートを削除することが重要です。
AWS Command Line Interface (AWS CLI)、REST API、または AWS SDK を使用して、Amazon S3 で進行中のマルチパートアップロードを中止できます。バケットライフサイクル設定を使用して、完了しないマルチパートアップロードを中止することもできます。
- Java
TransferManager
クラスは、進行中のマルチパートアップロードを中止する abortMultipartUploads
メソッドを提供します。アップロードを開始すると、そのアップロードを完了または中止するまで進行中とみなされます。Date
値を指定すると、この API が、そのバケットで指定した Date
の前に開始された進行中のすべてのマルチパートアップロードを中止します。
以下のタスクでは、高レベル Java クラスを使用してマルチパートアップロードを中止する手順を説明します。
高レベル API のマルチパートアップロード中止プロセス
1 |
TransferManager クラスのインスタンスを作成します。
|
2 |
バケット名および TransferManager.abortMultipartUploads 値を渡して Date メソッドを実行します。 |
次の Java コードでは、1 週間以上前に特定のバケットで開始された進行中のマルチパートアップロードをすべて中止します。作業サンプルの作成方法およびテスト方法については、「AWS SDK for 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();
}
}
}
- .NET
-
次の C# の例では、1 週間以上前に特定のバケットで開始された進行中のマルチパートアップロードをすべて中止します。コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「AWS SDK for .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);
}
}
}
}
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 Ruby API の詳細については、AWS SDK for Ruby - バージョン 2 を参照してください。abortMultipartUpload()
メソッドの例です。
AWS SDK for Ruby API の詳細については、AWS SDK for Ruby - バージョン 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,
]);
REST API を使用してマルチパートアップロードを中止する方法の詳細については、Amazon Simple Storage Service API リファレンスの AbortMultiPartUpload を参照してください。
AWS CLI を使用してマルチパートアップロードを中止する方法の詳細については、AWS CLI コマンドリファレンスの abort−multipart−upload を参照してください。