Respuestas:
De acuerdo con la documentación de Amazon S3:
Una vez eliminado, no hay ningún método para restaurar o recuperar un objeto.
Si tiene habilitado el control de versiones, ¡sí puede! En un depósito versionado, una acción de eliminación en un archivo realmente no lo elimina, pero agrega una versión con un "Eliminar marcador". Puede eliminar el marcador de eliminación con la AWS CLI:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Puede obtener todos los archivos en el cubo con
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Si desea recuperar todos los archivos en el depósito, puede probar:
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
si desea que funcione. Está asumiendo que está emitiendo su comando AWS a través de un archivo .txt y no un archivo .JSON.
Simplemente actualicé esta pregunta mientras buscaba la respuesta:
Puede agregar VERSIONING a los cubos S3 ahora. Esto hará que S3 mantenga versiones de un objeto incluso después de la eliminación. Documentación completa: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Ahora puede enumerar versiones de objetos con la consola de AWS: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
Si tiene los permisos correctos, puede eliminar el marcador de eliminación (la última versión de un objeto eliminado) y el resultado sería que el objeto está disponible nuevamente.