단일 객체 삭제하기

단일 객체 삭제하기

S3 버킷에서 단일 객체 하나를 삭제하려면 Amazon S3 콘솔이나 DELETE API를 사용하면 돼요. Amazon S3에서 객체를 삭제하는 방법에 대한 자세한 내용은 Amazon S3 객체 삭제하기를 참고하세요.

S3 버킷에 있는 모든 객체는 스토리지 비용이 발생하니까, 더 이상 필요 없는 객체는 삭제하는 게 좋아요. 예를 들어 로그 파일을 모으고 있다면 더 이상 필요 없을 때 삭제하는 게 좋겠죠. 로그 파일 같은 객체를 자동으로 삭제하도록 수명 주기 규칙을 설정할 수도 있어요. 자세한 내용은 버킷에 S3 Lifecycle 구성 설정하기를 참고하세요.

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. 왼쪽 탐색 창에서 General purpose buckets 또는 Directory buckets를 선택합니다.
  3. 버킷 목록에서 객체를 삭제할 버킷의 이름을 선택합니다.
  4. 객체를 선택한 다음 Delete를 선택합니다.
  5. Delete objects? 텍스트 상자의 Specified objects 아래에 나열된 객체 삭제를 확인하려면 delete를 입력합니다.

버전 관리 활성화 버킷에서 특정 객체 버전 영구 삭제하기

경고

Amazon S3에서 특정 객체 버전을 영구 삭제하면 되돌릴 수 없어요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
  2. Bucket name 목록에서 객체를 삭제할 버킷의 이름을 선택합니다.
  3. 삭제할 객체를 선택합니다.
  4. Show versions 토글을 선택합니다.
  5. 객체 버전을 선택한 다음 Delete를 선택합니다.
  6. Delete objects? 텍스트 상자의 Specified objects 아래에 나열된 특정 객체 버전의 영구 삭제를 확인하려면 Permanently delete를 입력합니다. Amazon S3는 특정 객체 버전을 영구 삭제합니다.

버전 관리가 활성화되지 않은 S3 버킷에서 객체 영구 삭제하기

경고

Amazon S3에서 객체를 영구 삭제하면 되돌릴 수 없어요. 또한 버전 관리가 활성화되지 않은 버킷에서는 삭제가 항상 영구적이에요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 General purpose buckets를 선택합니다.
  3. 버킷 목록에서 객체를 삭제할 버킷의 이름을 선택합니다.
  4. 객체를 선택한 다음 Delete를 선택합니다.
  5. Delete objects? 텍스트 상자의 Specified objects 아래에 나열된 객체의 영구 삭제를 확인하려면 permanently delete를 입력합니다.

참고

객체를 삭제하는 데 문제가 있다면 버전 관리 객체를 영구 삭제하고 싶어요를 참고하세요.

요청당 객체 하나를 삭제하려면 DELETE API를 사용하세요. 자세한 내용은 DELETE Object를 참고하세요. CLI로 객체를 삭제하는 방법은 delete-object를 참고하세요.

AWS SDK를 사용해 객체를 삭제할 수도 있어요. 하지만 애플리케이션이 요구한다면 REST 요청을 직접 보낼 수도 있어요. 자세한 내용은 _Amazon Simple Storage Service API Reference_의 DELETE Object를 참고하세요.

다음 예시들은 AWS SDK를 사용해서 버킷에서 객체를 삭제하는 방법을 보여줘요. 자세한 내용은 _Amazon Simple Storage Service API Reference_의 DELETE Object를 참고하세요.

버킷에서 S3 버전 관리가 활성화되어 있다면 다음 옵션이 있어요.

  • 버전 ID를 지정해 특정 객체 버전을 삭제할 수 있어요.
  • 버전 ID를 지정하지 않고 객체를 삭제할 수 있어요. 이 경우 S3는 객체에 삭제 마커를 추가해요.

S3 버전 관리에 대한 자세한 내용은 S3 버전 관리로 객체의 여러 버전 유지하기를 참고하세요.

더 많은 예시와 다른 언어의 예시는 _Amazon S3 API reference_의 AWS SDK 또는 CLI로 DeleteObject 사용하기를 참고하세요.

Java

AWS SDK for Java로 객체를 삭제할 때는 버전 관리 버킷과 비버전 관리 버킷 모두에서 삭제할 수 있어요.

  • 비버전 관리 버킷: 삭제 요청에서 버전 ID가 아니라 객체 키만 지정해요.
  • 버전 관리 버킷: 객체 키 이름과 버전 ID를 모두 지정해 특정 객체 버전을 삭제할 수 있어요. 그 객체의 다른 버전이 없다면 S3는 객체를 완전히 삭제해요. 그 외에는 S3가 지정된 버전만 삭제해요.

참고

ListVersions 요청을 보내면 객체의 버전 ID를 얻을 수 있어요.

AWS SDK for Java로 단일 객체를 삭제하는 예시는 _Amazon S3 API Reference_의 객체 삭제를 참고하세요.

.NET

다음 예시들은 버전 관리 버킷과 비버전 관리 버킷 모두에서 객체를 삭제하는 방법을 보여줘요. S3 버전 관리에 대한 자세한 내용은 S3 버전 관리로 객체의 여러 버전 유지하기를 참고하세요.

비버전 관리 버킷에서 객체 삭제하기

다음 C# 예시는 비버전 관리 버킷에서 객체를 삭제해요. 객체에 버전 ID가 없다고 가정하므로 버전 ID는 지정하지 않아요. 객체 키만 지정해요.

코드 예시를 설정하고 실행하는 방법은 _AWS SDK for .NET Developer Guide_의 AWS SDK for .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 버전 관리를 활성화합니다.
  2. 버킷에 샘플 객체를 추가합니다. 응답으로 S3가 새로 추가된 객체의 버전 ID를 반환합니다. 이 예시는 삭제 요청에서 이 버전 ID를 사용합니다.
  3. 객체 키 이름과 버전 ID를 모두 지정해서 샘플 객체를 삭제합니다.

참고

ListVersions 요청을 보내도 객체의 버전 ID를 얻을 수 있어요.

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

코드 예시를 설정하고 실행하는 방법은 _AWS SDK for .NET Developer Guide_의 AWS SDK for .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 Ruby API에 대한 자세한 내용은 AWS SDK for Ruby - Version 2를 참고하세요.

다음 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

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();

더 알아보기 (Learn more)