버전 관리가 활성화된 버킷에서 객체 버전 삭제 - Amazon Simple Storage Service

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

언제든지 Amazon S3 버킷에서 객체 버전을 삭제할 수 있습니다. 또한 수명 주기가 명확하게 정의된 객체에 대해 수명 주기 구성 규칙을 정의하여 Amazon S3에 현재 객체 버전을 만료시키거나 최신이 아닌 객체 버전을 영구적으로 제거하도록 요청할 수도 있습니다. 버킷에서 버전 관리가 활성화 또는 일시 중지된 경우 수명 주기 구성 작업은 다음과 같이 작동합니다.

  • Expiration 작업은 현재 객체 버전에 적용됩니다. 현재 객체 버전을 삭제하는 대신 Amazon S3에서는 나중에 현재 버전이 되는 삭제 마커를 추가하여 현재 버전을 최신이 아닌 버전으로 유지합니다.

  • NoncurrentVersionExpiration 작업이 최신이 아닌 객체 버전에 적용되고 Amazon S3에서는 이러한 객체 버전을 영구적으로 제거합니다. 영구적으로 제거된 객체는 복구할 수 없습니다.

자세한 내용은 스토리지 수명 주기 관리 섹션을 참조하세요.

Delete 요청 사용 사례

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

  • 버전 관리가 활성화된 경우, 단순 DELETE 요청은 객체를 영구적으로 삭제하지 않습니다. 그 대신 Amazon S3는 삭제 마커를 버킷에 삽입하고 해당 마커는 새로운 ID를 가진 객체의 현재 버전이 됩니다.

    현재 버전이 삭제 마커인 객체에 대해 GET을 시도하는 경우, Amazon S3는 객체가 삭제된 것처럼 동작하여 404 오류를 반환합니다. 자세한 내용은 삭제 마커를 통한 작업 섹션을 참조하세요.

    다음 그림은 단순한 DELETE 요청이 지정된 객체를 실제로 제거하지 않음을 보여 줍니다. 대신 Amazon S3에서 삭제 마커를 삽입합니다.

  • 버전 관리되는 객체를 영구적으로 삭제하려면 DELETE Object versionId를 사용해야 합니다.

    다음 그림은 지정된 객체 버전을 삭제하면 해당 객체가 영구적으로 제거됨을 보여 줍니다.

객체 버전을 삭제하려면

콘솔, AWS SDK 또는 REST API를 사용하여 Amazon S3에서 객체 버전을 삭제할 수 있습니다.

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

  2. 버킷 목록에서 객체가 포함된 버킷의 이름을 선택합니다.

  3. 객체 목록에서 객체의 이름을 선택합니다.

  4. 버전을 선택합니다.

    Amazon S3가 객체의 모든 버전을 표시합니다.

  5. 영구적으로 삭제할 버전의 버전 ID(Version ID) 옆에 있는 확인란을 선택합니다.

  6. 삭제를 선택합니다.

  7. [객체를 영구적으로 삭제하시겠습니까?(Permanently delete objects?)]에 permanently delete를 입력합니다.

    주의

    객체 버전을 영구적으로 삭제하면 작업을 실행 취소할 수 없습니다.

  8. 객체 삭제를 선택합니다.

    Amazon S3가 객체 버전을 삭제합니다.

AWS SDK for Java/.NET/PHP를 사용하여 객체를 삭제하는 예제는 Amazon S3 objects 삭제 섹션을 참조하세요. 버전 관리가 사용되지 않는 버킷과 버전 관리가 활성화된 버킷의 객체를 삭제하는 예는 동일합니다. 그러나 버전 관리가 활성화된 버킷의 경우 Amazon S3는 버전 번호를 할당합니다. 그렇지 않은 경우 버전 번호는 null이 됩니다.

다른 AWS SDK 사용에 대한 자세한 내용은 AWS 개발자 센터를 참조하세요.

Python

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 AWS SDK for Python (Boto) 사용 섹션을 참조하세요.

다음 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를 지정합니다.

예 - 특정 버전 삭제

다음 예제에서는 UIORUnfnd89493jJFJphoto.gif 버전을 삭제합니다.

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

객체 버전 삭제에 대한 자세한 내용은 아래 주제를 참조하세요.