Antworten:
Gemäß Die Amazon S3-Dokumentation:
Nach dem Löschen gibt es keine Methode zum Wiederherstellen oder Wiederherstellen eines Objekts.
Wenn Sie die Versionierung aktiviert haben, können Sie das! Auf einem versionierten Bucket löscht eine Löschaktion für eine Datei diese nicht wirklich, sondern fügt eine Version mit einem "Delete Marker" hinzu. Sie können die Löschmarkierung mit der AWS-CLI löschen:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Sie können alle Dateien in den Eimer mit bekommen
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Wenn Sie alle Dateien im Bucket wiederherstellen möchten, können Sie Folgendes versuchen:
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
wenn du willst, dass es funktioniert. Er geht davon aus, dass Sie Ihren AWS-Befehl über eine TXT-Datei und nicht über eine JSON-Datei ausgeben.
Ich aktualisiere gerade diese Frage, als ich nach der Antwort suchte:
Sie können jetzt VERSIONING zu S3-Buckets hinzufügen. Dadurch behält S3 die Versionen eines Objekts auch nach dem Löschen bei. Vollständige Dokumentation: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Sie können jetzt Objektversionen über die AWS-Konsole auflisten: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
Wenn Sie über die richtigen Berechtigungen verfügen, können Sie die Löschmarkierung (die neueste Version eines gelöschten Objekts) löschen. In diesem Fall ist das Objekt wieder verfügbar.