버전 관리 활성화 버킷에서 객체 버전 삭제

버전 관리 활성화 버킷에서 객체 버전 삭제 (Deleting object versions from a versioning-enabled bucket)

Amazon S3 버킷에서 원할 때마다 객체 버전을 삭제할 수 있어요. 또한 수명주기가 명확한 객체에 대해 수명주기 구성 규칙을 정의해 Amazon S3가 현재 객체 버전을 만료시키거나 비현재 객체 버전을 영구 제거하도록 요청할 수 있어요. 버킷에서 버전 관리가 활성화되어 있거나 일시 중단된 경우, 수명주기 구성 작업은 다음과 같이 동작해요.

  • Expiration 작업은 현재 객체 버전에 적용돼요. 현재 객체 버전을 삭제하는 대신, Amazon S3는 삭제 마커를 추가해 현재 버전을 비현재 버전으로 유지하고, 그 마커가 현재 버전이 돼요.
  • NoncurrentVersionExpiration 작업은 비현재 객체 버전에 적용되며, Amazon S3는 이 객체 버전들을 영구 제거해요. 영구 제거된 객체는 복구할 수 없어요.

S3 Lifecycle에 대한 자세한 내용은 객체의 수명주기 관리와 S3 Lifecycle 구성 예시를 참고하세요.

버킷에 현재 및 비현재 객체 버전이 몇 개인지 확인하려면 Amazon S3 Storage Lens 지표를 사용할 수 있어요. S3 Storage Lens는 조직 전체에서 객체 스토리지 사용량과 활동을 파악하는 데 사용할 수 있는 클라우드 스토리지 분석 기능이에요. 자세한 내용은 S3 Storage Lens를 사용한 스토리지 비용 최적화를 참고하세요. 전체 지표 목록은 S3 Storage Lens 지표 용어집을 참고하세요.

참고 저장되고 전송되는 객체의 모든 버전(비현재 객체 버전 포함)에는 일반 Amazon S3 요금이 적용돼요. 자세한 내용은 Amazon S3 요금을 참고하세요.

본문

삭제 요청 사용 사례

DELETE 요청의 사용 사례는 다음과 같아요.

  • 버전 관리가 활성화된 경우 간단한 DELETE로 객체를 영구 삭제할 수 없어요. (간단한 DELETE 요청은 버전 ID를 지정하지 않는 요청이에요.) 대신 Amazon S3는 버킷에 삭제 마커를 삽입하고, 그 마커가 새 ID를 가진 객체의 현재 버전이 돼요.
  • 현재 버전이 삭제 마커인 객체를 GET하려고 하면 Amazon S3는 객체가 삭제된 것처럼 동작하고(실제로 지워지지 않았더라도) 404 오류를 반환해요. 자세한 내용은 삭제 마커 작업을 참고하세요.

다음 그림은 간단한 DELETE가 지정된 객체를 실제로 제거하지 않는 것을 보여줘요. 대신 Amazon S3는 삭제 마커를 삽입해요.

버전 관리 객체를 영구 삭제하려면 DELETE Object versionId를 사용해야 해요. 다음 그림은 지정된 객체 버전을 삭제하면 해당 객체가 영구 제거되는 것을 보여줘요.

객체 버전 삭제

콘솔, AWS SDK, REST API 또는 AWS Command Line Interface를 사용해 Amazon S3에서 객체 버전을 삭제할 수 있어요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 열어요.
  2. Buckets 목록에서 객체가 포함된 버킷의 이름을 선택해요.
  3. Objects 목록에서 객체의 이름을 선택해요.
  4. Versions를 선택해요. Amazon S3가 객체의 모든 버전을 보여줘요.
  5. 영구 삭제할 버전의 Version ID 옆에 있는 확인란을 선택해요.
  6. Delete를 선택해요.
  7. **Permanently delete objects?**에 permanently delete를 입력해요.
  8. Delete objects를 선택해요.

경고 객체 버전을 영구 삭제하면 이 작업을 되돌릴 수 없어요.

  1. Amazon S3는 객체 버전을 삭제해요.

Java, .NET 및 PHP용 AWS SDK로 객체를 삭제하는 예시는 Amazon S3 객체 삭제를 참고하세요. 비버전 관리 및 버전 관리 활성화 버킷에서 객체를 삭제하는 예시는 동일해요. 그러나 버전 관리 활성화 버킷의 경우 Amazon S3가 버전 번호를 할당해요. 그 외 경우에는 버전 번호가 null이에요. 다른 AWS SDK 사용에 대한 자세한 내용은 AWS Developer Center를 참고하세요.

Python

다음 Python 코드 예시는 객체의 모든 버전을 삭제해 버전 관리 객체를 영구 삭제해요.

def permanently_delete_object(bucket, object_key):
    """
    Permanently deletes a versioned object by deleting all of its versions.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that contains the object.
    :param object_key: The object to delete.
    """
    try:
        bucket.object_versions.filter(Prefix=object_key).delete()
        logger.info("Permanently deleted all versions of object %s.", object_key)
    except ClientError:
        logger.exception("Couldn't delete all versions of %s.", object_key)
        raise

객체의 특정 버전 삭제

DELETE에서 버전 ID를 지정해요.

예시 — 특정 버전 삭제

다음 예시는 photo.gif의 버전 UIORUnfnd89493jJFJ을 삭제해요.

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1
Host: bucket.s3.amazonaws.com
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: AWS AKIAIO...PLE=
Content-Type: text/plain
Content-Length: 0

다음 명령은 amzn-s3-demo-bucket1이라는 버킷에서 test.txt라는 객체를 삭제해요. 객체의 특정 버전을 제거하려면 버킷 소유자여야 하고 버전 ID 하위 리소스를 사용해야 해요.

aws s3api delete-object --bucket amzn-s3-demo-bucket1 --key test.txt --version-id versionID

delete-object에 대한 자세한 내용은 AWS CLI Command Reference의 delete-object를 참고하세요.

객체 버전 삭제에 대한 자세한 내용은 다음 주제를 참고하세요.

  • 삭제 마커 작업
  • 이전 버전을 현재 버전으로 만들기 위해 삭제 마커 제거
  • MFA 삭제 활성화 버킷에서 객체 삭제

출처: 문서

더 알아보기