Відповіді:
Згідно з документацією Amazon S3:
Після видалення не існує способу відновлення або відновлення об'єкта.
Якщо у вас є ввімкнення версії, так, ви можете! У версії з версією дія видалення файлу насправді не видаляє його, але додає версію з "Видалити маркер". Ви можете видалити маркер видалення за допомогою 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
якщо ви хочете, щоб він працював. Він припускає, що ви виводите команду AWS через файл .txt, а не файл .JSON.
Тільки оновлюючи це питання, коли я шукав відповідь:
Ви можете додати 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
Якщо у вас є правильні дозволи, ви можете видалити маркер видалення (остання версія видаленого об'єкта), і результат буде те, що об’єкт знову буде доступний.