Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

.NET용 AWS SDK을 사용하여 객체 삭제

버전이 지정되지 않은 버킷에서 객체를 삭제하는 경우 해당 객체가 제거됩니다. 버전 관리를 사용하는 버킷의 경우 다음 옵션을 사용할 수 있습니다.

  • 버전 ID를 지정하여 객체의 특정 버전을 삭제합니다.

  • 버전 ID를 지정하지 않고 객체를 삭제합니다. Amazon S3에서는 삭제 마커를 추가합니다. 삭제 마커에 대한 자세한 내용은 객체 버전 관리 단원을 참조하십시오.

다음 예제는 버전이 지정된 버킷과 버전이 지정되지 않는 버킷 둘 다에서 객체를 삭제하는 방법을 보여줍니다. 버전 관리에 대한 자세한 내용은 객체 버전 관리 단원을 참조하십시오.

예 버전이 지정되지 않은 버킷에서 단일 객체 삭제

다음 C# 예제는 버전이 지정되지 않은 버킷에서 객체를 삭제합니다. 이 예제에서는 해당 객체에 버전 ID가 없다고 가정합니다. 따라서 버전 ID를 지정하지 않습니다. 객체 키만 지정합니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예시 실행 단원을 참조하십시오.

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectNonVersionedBucketTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); DeleteObjectNonVersionedBucketAsync().Wait(); } private static async Task DeleteObjectNonVersionedBucketAsync() { try { var deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(deleteObjectRequest); } 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); } } } }

예 버전이 지정된 버킷에서 단일 객체 삭제

다음 C# 예제는 버전이 지정된 버킷에서 객체를 삭제합니다. 여기에서는 객체 키 이름 및 버전 ID를 지정하여 객체의 특정 버전을 삭제합니다.

이 코드에서는 다음 작업을 수행합니다.

  1. 지정한 버킷에 대해 버전 관리를 활성화합니다(이미 버전 관리를 사용하는 경우 이 작업은 아무런 효과가 없음).

  2. 버킷에 샘플 객체를 추가합니다. 응답으로 Amazon S3가 새로 추가된 객체의 버전 ID를 반환합니다. 이 예제에서는 삭제 요청에 이 버전 ID를 사용합니다.

  3. 객체 키 이름 및 버전 ID를 지정하여 샘플 객체를 삭제합니다.

    참고

    ListVersions 요청을 보내 객체의 버전 ID를 가져올 수도 있습니다.

    var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName });

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예시 실행 단원을 참조하십시오.

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectVersion { private const string bucketName = "*** versioning-enabled bucket name ***"; private const string keyName = "*** Object Key Name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateAndDeleteObjectVersionAsync().Wait(); } private static async Task CreateAndDeleteObjectVersionAsync() { try { // Add a sample object. string versionID = await PutAnObject(keyName); // Delete the object by specifying an object key and a version ID. DeleteObjectRequest request = new DeleteObjectRequest { BucketName = bucketName, Key = keyName, VersionId = versionID }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(request); } 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); } } static async Task<string> PutAnObject(string objectKey) { PutObjectRequest request = new PutObjectRequest { BucketName = bucketName, Key = objectKey, ContentBody = "This is the content body!" }; PutObjectResponse response = await client.PutObjectAsync(request); return response.VersionId; } } }