버전 관리가 사용 설정된 버킷에서 객체 버전 삭제 - Amazon Simple Storage Service

버전 관리가 사용 설정된 버킷에서 객체 버전 삭제

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

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

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

S3 수명 주기에 대한 자세한 내용은 스토리지 수명 주기 관리S3 수명 주기 구성의 예제 섹션을 참조하세요.

버킷에 있는 최신 및 비최신 객체 버전의 수를 확인하려면 Amazon S3 스토리지 렌즈 지표를 사용하면 됩니다. S3 스토리지 렌즈는 조직 전반에서 객체 스토리지 사용 및 활동에 대한 가시성을 확보하는 데 사용할 수 있는 클라우드 스토리지 분석 기능입니다. 자세한 내용은 Amazon S3 스토리지 렌즈를 사용한 스토리지 비용 최적화를 참조하세요. 지표의 전체 목록은 S3 스토리지 렌즈 지표 용어집을 참조하세요.

참고

최신이 아닌 객체 버전을 포함하여 저장되거나 전송된 객체의 모든 버전에는 일반 Amazon S3 요금이 적용됩니다. 자세한 내용은 Amazon S3 요금을 참조하십시오.

Delete 요청 사용 사례

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. 버킷 목록에서 객체가 포함된 버킷의 이름을 선택합니다.

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

  4. 버전을 선택합니다.

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

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

  6. 삭제를 선택합니다.

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

    주의

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

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

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

Java, .NET, PHP용 AWS SDK를 사용하여 객체를 삭제하는 예는 Amazon S3 객체 삭제 단원을 참조하세요. 버전 관리가 사용되지 않는 버킷과 버전 관리가 사용 설정된 버킷의 객체를 삭제하는 예는 동일합니다. 그러나 버전 관리가 사용 설정된 버킷의 경우 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

다음 명령은 이름이 DOC-EXAMPLE-BUCKET1인 버킷에서 test.txt라는 객체를 삭제합니다. 객체의 지정된 버전을 제거하려면 버킷 소유자여야 하고 버전 Id 하위 리소스를 사용해야 합니다.

aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET1 --key test.txt --version-id versionID

delete-object에 대한 자세한 정보는 AWS CLI 명령 참조의 delete-object 섹션을 참조하세요.

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