멀티파트 업로드 중단 - Amazon Simple Storage Service

멀티파트 업로드 중단

멀티파트 업로드를 개시한 후에 부분 업로드를 시작합니다. 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주일 이상 전에 특정 버킷에서 시작되어 진행 중인 멀티파트 업로드를 모두 중지합니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 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

이 예제에서는 진행 중인 멀티파트 업로드를 중지하기 위해 AWS SDK for PHP 버전 3의 클래스를 사용하는 방법을 보여줍니다. 이미 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를 참조하십시오.