버전 관리가 활성화된 버킷에서 삭제된 Amazon S3 객체를 검색하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 20일

버전 관리가 활성화된 Amazon Simple Storage Service(Amazon S3) 버킷에서 삭제된 객체를 검색하려고 합니다. 어떻게 해야 합니까?

간략한 설명

버전 관리가 활성화된 버킷에서 객체를 삭제하면 Amazon S3가 해당 객체의 삭제 마커를 생성합니다. 그 삭제 마커가 객체의 최신 버전이 되고, 실제 객체는 이전 버전이 됩니다. 삭제 마커가 있으면, Amazon S3는 객체에 대한 요청에 객체가 삭제된 것처럼 응답합니다. 예를 들어 객체에 대한 GET 요청을 보내면 Amazon S3가 오류를 반환합니다.

다음 방법 중 하나로, 버전 관리가 활성화된 버킷에서 삭제된 객체를 검색할 수 있습니다.

  • 객체의 이전 버전 다운로드: 객체의 이전 버전(실제 객체)을 다운로드하려면 s3:GetObjectVersion 권한이 있어야 합니다.
  • 삭제 마커 제거: 삭제 마커를 제거하면 실제 객체가 객체의 최신 버전이 됩니다. 삭제 마커를 제거하려면 s3:DeleteObjectVersion 권한이 있어야 합니다. 또한 버킷을 소유하거나 생성한 AWS 계정을 사용하여 삭제 마커를 제거해야 합니다.
    참고: 버킷에 [MFA 삭제]가 활성화되어 있는 경우 지정된 Multi-Factor Authentication(MFA)을 사용하여 삭제 마커를 제거해야 합니다.

​해결 방법

Amazon S3 콘솔을 사용하여 객체의 이전 버전 다운로드

1.    Amazon S3 콘솔을 엽니다.

2.    버킷 목록에서 삭제된 객체의 버킷을 엽니다.

3.    삭제된 객체의 폴더로 이동합니다.

4.    [버전]에서 [표시]를 선택합니다.

5.    검색 창에 삭제된 객체의 이름을 입력합니다.

6.    객체의 이전 버전(삭제 마커가 아닌 실제 객체)을 선택한 다음 [다운로드]를 선택합니다.

AWS 명령줄 인터페이스(AWS CLI)를 사용하여 객체의 이전 버전 다운로드

1.    버킷에 대해 list-object-versions 명령을 실행합니다.

팁: 다음 예제 명령에는 지정된 키 이름 접두사로 결과를 필터링하는 -prefix 옵션이 포함되어 있습니다. 이렇게 하면 버킷에 많은 수의 객체 버전이 포함되어 있는 경우 결과 수를 줄이고 시간을 절약할 수 있습니다.

aws s3api list-object-versions --bucket AWSDOC-EXAMPLE-BUCKET --prefix example.txt

2.    명령 출력에서 이전 객체 버전의 버전 ID(삭제 마커가 아닌 실제 객체)를 복사합니다.

3.    이전 단계에서 복사한 버전 ID에 대해 get-object 명령을 실행합니다.

aws s3api get-object --bucket AWSDOC-EXAMPLE-BUCKET --key example.txt --version-id example.d6tjAKF1iObKbEnNQkIMPjj

Amazon S3 콘솔을 사용하여 삭제 마커 제거

1.    삭제된 객체의 버킷을 소유하거나 생성한 AWS 계정에서 Amazon S3 콘솔을 엽니다.

2.    버킷 목록에서 삭제된 객체의 버킷을 엽니다.

3.    삭제된 객체의 폴더로 이동합니다.

4.    [버전]에서 [표시]를 선택합니다.

5.    검색 창에 삭제된 객체의 이름을 입력합니다.

6.    객체의 삭제 마커를 선택합니다.

경고: 선택 항목을 신중하게 검토하여 삭제 마커인지 확인하십시오. 삭제한 객체 버전은 검색할 수 없습니다.

7.    [작업]을 선택한 후 [삭제]를 선택합니다.

8.    [객체 삭제] 대화 상자에서 [삭제]를 선택합니다.

AWS CLI를 사용하여 삭제 마커 제거

1.    다음 -query 파라미터를 사용하여 list-object-versions 명령을 실행합니다.

팁: 다음 예제 명령에는 지정된 키 이름 접두사로 결과를 필터링하는 -prefix 옵션이 포함되어 있습니다. 이렇게 하면 버킷에 많은 수의 삭제 마커가 포함되어 있는 경우 결과 수를 줄이고 시간을 절약할 수 있습니다.

aws s3api list-object-versions --bucket AWSDOC-EXAMPLE-BUCKET --prefix example.txt --query 'DeleteMarkers[?IsLatest==`true`]'

2.    이 명령은 버킷에서 삭제된 모든 객체를 반환합니다. 명령 출력에서 검색하려는 객체의 삭제 마커의 버전 ID를 복사합니다.

경고: 버전 ID를 신중하게 검토하여 삭제 마커의 버전 ID인지 확인하십시오. 삭제한 객체 버전은 검색할 수 없습니다.

3.    이전 단계에서 복사한 버전 ID에 대해 delete-object 명령을 실행합니다.

aws s3api delete-object --bucket AWSDOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'

4.    삭제 마커를 제거하면 버킷의 객체를 나열할 때 실제 객체가 반환됩니다. 다음과 같이 ls 명령을 실행하면 이를 확인할 수 있습니다.

aws s3 ls s3://AWSDOC-EXAMPLE-BUCKET

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?