Answers:
如果启用了版本控制,则可以!在版本桶中,对文件的删除操作并不会真正删除它,但是会添加带有“删除标记”的版本。您可以使用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
如果希望它可以工作,则需要添加一个。他假设您是通过.txt文件而不是.JSON文件输出AWS命令。
当我在寻找答案时,只需更新此问题:
您现在可以将VERSIONING添加到S3存储桶。即使删除后,这也会导致S3保留对象的版本。完整文档:http : //docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
您现在可以使用AWS控制台列出对象版本:http : //docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
如果您拥有正确的权限,则可以删除删除标记(已删除对象的最新版本),结果将是该对象再次可用。