멀티파트 업로드 중단
멀티파트 업로드 중단 (Aborting a multipart upload)
멀티파트 업로드를 시작한 후에는 부분 업로드를 시작해요. Amazon S3는 이러한 부분을 저장하며, 모든 부분을 업로드하고 멀티파트 업로드 완료 요청을 보낸 후에만 객체를 만들어요. 멀티파트 업로드 완료 요청을 수신하면 Amazon S3는 부분을 조합해 객체를 만들어요. 멀티파트 업로드 완료 요청을 성공적으로 보내지 않으면 S3는 부분을 조합하지 않고 객체도 만들지 않아요. 부분을 업로드한 후 멀티파트 업로드를 완료하고 싶지 않다면 멀티파트 업로드를 중단해야 해요.
출처: 문서
본문
업로드된 부분과 연결된 모든 스토리지에는 요금이 부과돼요. 업로드된 부분을 제거하려면 항상 멀티파트 업로드를 완료하거나 중지할 것을 권장해요. 요금에 대한 자세한 내용은 멀티파트 업로드와 요금을 참고하세요.
버킷 수명주기 구성을 사용해 불완전한 멀티파트 업로드를 중지할 수도 있어요. 자세한 내용은 버킷 수명주기 구성을 구성해 불완전한 멀티파트 업로드 삭제를 참고하세요.
다음 절은 AWS Command Line Interface, REST API 또는 AWS SDK를 사용해 Amazon S3의 진행 중인 멀티파트 업로드를 중지하는 방법을 보여줘요.
AWS CLI로 멀티파트 업로드를 중지하는 방법에 대한 자세한 내용은 AWS CLI Command Reference의 abort-multipart-upload를 참고하세요.
REST API로 멀티파트 업로드를 중지하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API Reference의 AbortMultipartUpload를 참고하세요.
Java | .NET
AWS SDK for Java를 사용해 진행 중인 멀티파트 업로드를 중지하려면, 지정된 날짜 이전에 시작되어 아직 진행 중인 업로드를 중단할 수 있어요. 업로드는 시작한 후 완료하거나 중지할 때까지 진행 중인 것으로 간주돼요.
멀티파트 업로드를 중지하려면 다음을 수행할 수 있어요.
- S3Client 인스턴스를 만들어요.
- 버킷 이름과 기타 필수 파라미터를 전달해 클라이언트의 중단 메서드를 사용해요.
참고 특정 멀티파트 업로드도 중지할 수 있어요. 자세한 내용은 AWS SDK 사용(로우 레벨 API)을 참고하세요.
AWS SDK for Java로 멀티파트 업로드를 중단하는 예시는 Amazon S3 API Reference의 멀티파트 업로드 취소를 참고하세요.
다음 C# 예시는 특정 버킷에서 일주일 전에 시작된 모든 진행 중인 멀티파트 업로드를 중지해요. 코드 예시를 설정하고 실행하는 방법에 대한 자세한 내용은 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);
}
}
}
}
참고 특정 멀티파트 업로드도 중지할 수 있어요. 자세한 내용은 AWS SDK 사용(로우 레벨 API)을 참고하세요.
AmazonS3.abortMultipartUpload 메서드를 호출해 진행 중인 멀티파트 업로드를 중지할 수 있어요. 이 메서드는 Amazon S3에 업로드된 부분을 삭제하고 리소스를 해제해요. 업로드 ID, 버킷 이름, 키 이름을 제공해야 해요. 다음 Java 코드 예시는 진행 중인 멀티파트 업로드를 중지하는 방법을 보여줘요.
멀티파트 업로드를 중지하려면 업로드 ID와 업로드에 사용된 버킷 및 키 이름을 제공해요. 멀티파트 업로드를 중지한 후에는 해당 업로드 ID로 추가 부분을 업로드할 수 없어요. Amazon S3 멀티파트 업로드에 대한 자세한 내용은 Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드 및 복사를 참고하세요.
Java | .NET | PHP
AWS SDK for Java를 사용해 특정 진행 중인 멀티파트 업로드를 중지하려면 버킷 이름, 객체 키, 업로드 ID를 제공해 로우 레벨 API로 업로드를 중단할 수 있어요.
참고 특정 멀티파트 업로드를 중단하는 대신, 특정 시간 이전에 시작되어 아직 진행 중인 모든 멀티파트 업로드를 중지할 수 있어요. 이 정리 작업은 시작했지만 완료하거나 중지하지 않은 오래된 멀티파트 업로드를 중지하는 데 유용해요. 자세한 내용은 AWS SDK 사용(하이 레벨 API)을 참고하세요.
AWS SDK for Java로 특정 멀티파트 업로드를 중단하는 예시는 Amazon S3 API Reference의 멀티파트 업로드 취소를 참고하세요.
다음 C# 예시는 멀티파트 업로드를 중지하는 방법을 보여줘요. 다음 코드를 포함하는 전체 C# 샘플은 AWS SDK 사용(로우 레벨 API)을 참고하세요.
AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
await AmazonS3Client.AbortMultipartUploadAsync(abortMPURequest);
특정 시간 이전에 시작된 모든 진행 중인 멀티파트 업로드도 중단할 수 있어요. 이 정리 작업은 완료되지 않았거나 중단된 멀티파트 업로드를 중단하는 데 유용해요. 자세한 내용은 AWS SDK 사용(하이 레벨 API)을 참고하세요.
이 예시는 AWS SDK for PHP 버전 3의 클래스를 사용해 진행 중인 멀티파트 업로드를 중단하는 방법을 보여줘요. 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,
]);