답변:
버전 관리를 사용하는 경우 가능합니다! 버전이 지정된 버킷에서 파일에 대한 삭제 작업은 실제로 파일을 삭제하지 않지만 "삭제 마커"가있는 버전을 추가합니다. AWS CLI를 사용하여 삭제 마커를 삭제할 수 있습니다.
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
버킷의 모든 파일을
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
버킷의 모든 파일을 삭제 취소하려면 다음을 시도하십시오.
echo '#!/bin/bash' > undeleteScript.sh && aws --output text s3api list-object-versions --bucket yourbucket-name | grep -E "^DELETEMARKERS" | awk '{FS = "[\t]+"; print "aws s3api delete-object --bucket yourbucket-name --key \42"$3"\42 --version-id "$5";"}' >> undeleteScript.sh && . undeleteScript.sh; rm -f undeleteScript.sh;
--output=text
경우 작동 하려면을 추가해야합니다 . 그는 .JSON 파일이 아닌 .txt 파일을 통해 AWS 명령을 출력한다고 가정합니다.
답을 찾고 있었을 때이 질문을 업데이트하십시오.
S3 버킷에 VERSIONING을 추가 할 수 있습니다. 이렇게하면 삭제 후에도 S3가 객체의 버전을 유지합니다. 전체 설명서 : http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
이제 AWS 콘솔을 사용하여 객체 버전을 나열 할 수 있습니다. http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
올바른 권한이 있으면 삭제 마커 (삭제 된 객체의 최신 버전)를 삭제할 수 있으며 결과적으로 해당 객체를 다시 사용할 수있게됩니다.