단일 객체 삭제 - Amazon Simple Storage Service

단일 객체 삭제

Amazon S3 콘솔 또는 DELETE API를 사용하여 S3 버킷에서 단일의 기존 객체를 삭제할 수 있습니다. Amazon S3에서 객체 삭제에 대한 자세한 내용은 Amazon S3 객체 삭제 단원을 참조하십시오.

S3 버킷에 있는 모든 객체에 스토리지 비용이 발생하기 때문에 더 이상 필요하지 않은 객체는 삭제해야 합니다. 예를 들어 로그 파일을 수집하는 경우, 더 이상 필요가 없는 로그 파일은 삭제하는 것이 좋습니다. 로그 파일과 같은 객체를 자동으로 삭제하도록 수명 주기 규칙을 설정할 수 있습니다. 자세한 내용은 버킷에서 수명 주기 구성 설정 단원을 참조하십시오.

Amazon S3 기능 및 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하세요.

다음 단계에 따라 Amazon S3 콘솔을 사용하여 버킷에서 단일 객체를 삭제합니다.

주의

Amazon S3 콘솔에서 객체 또는 지정된 객체 버전을 영구 삭제하는 경우 이를 실행 취소할 수 없습니다.

버전 관리가 활성화되거나 일시 중단된 객체를 삭제하려면
참고

버전 관리가 일시 중단된 버킷에 있는 객체의 버전 ID가 NULL로 표시되는 경우에는 이전 버전이 없으므로 S3는 해당 객체를 영구 삭제합니다. 그러나 버전 관리가 일시 중단된 버킷의 해당 객체에 대한 유효한 버전 ID가 있는 경우 S3는 삭제된 객체에 대한 삭제 마커를 생성하고 객체의 이전 버전을 그대로 유지합니다.

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 이름 목록에서 객체를 삭제하려는 버킷 이름을 선택합니다.

  3. 객체를 선택한 다음 삭제를 선택합니다.

  4. 개체를 삭제할까요? 텍스트 상자의 지정된 객체 아래에 있는 객체 목록의 삭제를 확인하려면 delete를 입력합니다.

버전 관리가 활성화된 버킷에서 특정 객체 버전을 영구적으로 삭제하려면
주의

Amazon S3에서 지정된 객체 버전을 영구 삭제하는 경우 이를 실행 취소할 수 없습니다.

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 이름 목록에서 객체를 삭제하려는 버킷 이름을 선택합니다.

  3. 삭제할 객체를 선택합니다.

  4. 버전 표시 토글을 선택합니다.

  5. 객체 버전을 선택한 다음 삭제를 선택합니다.

  6. 객체를 삭제할까요? 텍스트 상자의 지정된 객체 아래에 있는 특정 객체 버전의 영구 삭제를 확인하려면 영구 삭제를 입력합니다. Amazon S3가 특정 객체 버전을 영구적으로 삭제합니다.

버전 관리가 활성화되지 않은 Amazon S3 버킷의 객체를 영구적으로 삭제하려면
주의

Amazon S3에서 객체를 영구 삭제하는 경우 이를 실행 취소할 수 없습니다. 또한 버전 관리가 활성화되지 않은 버킷의 경우 삭제는 영구적입니다.

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 이름 목록에서 객체를 삭제하려는 버킷 이름을 선택합니다.

  3. 객체를 선택한 다음 삭제를 선택합니다.

  4. 객체를 삭제할까요? 텍스트 상자의 지정된 객체 아래에 있는 객체의 영구 삭제를 확인하려면 영구 삭제를 입력합니다.

참고

객체 삭제와 관련하여 문제가 발생하는 경우 버전이 지정된 객체를 영구적으로 삭제하고 싶습니다. 섹션을 참조하세요.

다음 예제에서는 AWS SDK를 사용하여 버킷에서 객체를 삭제하는 방법을 보여줍니다. 자세한 내용은 Amazon Simple Storage Service API 참조DELETE Object를 참조하십시오.

S3 버전 관리를 사용하는 버킷의 경우 다음 옵션을 사용할 수 있습니다.

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

  • 버전 ID를 지정하지 않고 객체를 삭제합니다. 이 경우 Amazon S3에서는 객체에 삭제 마커를 추가합니다.

S3 버전 관리에 대한 자세한 내용은 S3 버킷에서 버전 관리 사용 섹션을 참조하십시오.

Java
예제 1: 객체 삭제(버전이 지정되지 않은 버킷)

다음 예제에서는 버킷에서 버전 관리를 사용하지 않고 객체에 버전 ID가 없다고 가정합니다. 삭제 요청 시, 객체 키만 지정하며 버전 ID는 지정하지 않습니다.

실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 Java 코드 예제 테스트 섹션을 참조하십시오.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.DeleteObjectRequest; import java.io.IOException; public class DeleteObjectNonVersionedBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName)); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
예제 2: 객체 삭제(버전이 지정된 버킷)

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

이 예제는 다음을 수행합니다.

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

  2. 객체 키 이름 및 버전 ID를 지정하여 객체 버전을 삭제합니다. 해당 객체의 다른 버전이 없는 경우 Amazon S3에서는 그 객체를 완전히 삭제합니다. 그렇지 않은 경우 Amazon S3에서는 지정된 버전만 삭제합니다.

    참고

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

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketVersioningConfiguration; import com.amazonaws.services.s3.model.DeleteVersionRequest; import com.amazonaws.services.s3.model.PutObjectResult; import java.io.IOException; public class DeleteObjectVersionEnabledBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Check to ensure that the bucket is versioning-enabled. String bucketVersionStatus = s3Client.getBucketVersioningConfiguration(bucketName).getStatus(); if (!bucketVersionStatus.equals(BucketVersioningConfiguration.ENABLED)) { System.out.printf("Bucket %s is not versioning-enabled.", bucketName); } else { // Add an object. PutObjectResult putResult = s3Client.putObject(bucketName, keyName, "Sample content for deletion example."); System.out.printf("Object %s added to bucket %s\n", keyName, bucketName); // Delete the version of the object that we just created. System.out.println("Deleting versioned object " + keyName); s3Client.deleteVersion(new DeleteVersionRequest(bucketName, keyName, putResult.getVersionId())); System.out.printf("Object %s, version %s deleted\n", keyName, putResult.getVersionId()); } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

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

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

다음 C# 예제는 버전이 지정되지 않은 버킷에서 객체를 삭제합니다. 이 예제에서는 해당 객체에 버전 ID가 없다고 가정합니다. 따라서 버전 ID를 지정하지 않습니다. 객체 키만 지정합니다.

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

using Amazon; 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 deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message); } } } }
예 버전이 지정된 버킷에서 객체 삭제

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

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

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

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

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

    참고

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

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

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

using Amazon; 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 deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting 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; } } }
PHP

이 예제에서는 AWS SDK for PHP 버전 3의 클래스를 사용하여 버전이 지정되지 않은 버킷에서 단일 객체를 삭제하는 방법을 보여 줍니다. 버전이 지정된 버킷에서 객체를 삭제하는 방법에 대한 자세한 내용은 REST API 사용 섹션을 참조하십시오.

이 예제에서는 이미 AWS SDK for PHP 사용 및 PHP 예제 실행의 지침에 따라 AWS SDK for PHP가 올바르게 설치되어 있다고 가정합니다. 이 가이드의 PHP 예제 실행에 대한 자세한 내용은 PHP 예제 실행 섹션을 참조하십시오.

다음 PHP 예제는 버킷에서 객체를 삭제합니다. 이 예제에서는 버전이 지정되지 않은 버킷에서 객체를 삭제하는 방법을 보여주기 때문에 삭제 요청 시 버킷 이름과 객체 키(버전 ID 아님)만 제공합니다.

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // 1. Delete the object from the bucket. try { echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL; $result = $s3->deleteObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); if ($result['DeleteMarker']) { echo $keyname . ' was deleted or does not exist.' . PHP_EOL; } else { exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL); } } catch (S3Exception $e) { exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL); } // 2. Check to see if the object was deleted. try { echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL; $result = $s3->getObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); echo 'Error: ' . $keyname . ' still exists.'; } catch (S3Exception $e) { exit($e->getAwsErrorMessage()); }
Javascript

이 예에서는 AWS SDK for JavaScript의 버전 3을 사용하여 객체를 삭제하는 방법을 보여줍니다. AWS SDK for JavaScript에 대한 자세한 내용은 AWS SDK for JavaScript 사용 섹션을 참조하십시오.

import { DeleteObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js" // Helper function that creates Amazon S3 service client module. export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY" }; export const run = async () => { try { const data = await s3Client.send(new DeleteObjectCommand(bucketParams)); console.log("Success. Object deleted.", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

요청당 하나의 객체를 삭제하려면 DELETE API를 사용합니다. 자세한 내용은 DELETE Object(객체 삭제) 단원을 참조하십시오. CLI를 사용하여 객체를 삭제하는 방법에 대한 자세한 내용은 delete-object를 참조하십시오.

AWS SDK를 사용하여 객체를 삭제할 수 있습니다. 하지만 애플리케이션에서 요구할 경우 REST 요청을 직접 전송할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API 참조DELETE Object를 참조하십시오.