Câu trả lời:
Theo Tài liệu Amazon S3:
Sau khi xóa, không có phương pháp để khôi phục hoặc phục hồi đối tượng.
Nếu bạn có phiên bản cho phép, có bạn có thể! Trên một thùng được phiên bản, một hành động xóa trên một tệp không thực sự xóa nó nhưng nó thêm một phiên bản với "Xóa Marker". Bạn có thể xóa điểm đánh dấu bằng AWS CLI:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Bạn có thể lấy tất cả các tệp trong thùng với
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Nếu bạn muốn phục hồi tất cả các tệp trong nhóm, bạn có thể thử:
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
nếu bạn muốn nó hoạt động. Anh ta cho rằng bạn đang xuất lệnh AWS của mình thông qua tệp .txt chứ không phải tệp .JSON.
Chỉ cần cập nhật câu hỏi này là tôi đang tìm câu trả lời:
Bạn có thể thêm VERSIONING vào xô S3 ngay bây giờ. Điều này sẽ khiến S3 giữ các phiên bản của một đối tượng ngay cả sau khi xóa. Tài liệu đầy đủ: http://docs.amazonwebservice.com/AmazonS3/latest/dev/Versioning.html
Bây giờ bạn có thể liệt kê các phiên bản đối tượng bằng bảng điều khiển AWS: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
Nếu bạn có quyền, thì bạn có thể xóa dấu xóa (phiên bản mới nhất của đối tượng bị xóa) và kết quả sẽ là đối tượng có sẵn một lần nữa.