Respostas:
De acordo com a documentação do Amazon S3:
Uma vez excluído, não há método para restaurar ou recuperar um objeto.
Se você tem o controle de versão ativado, sim pode! Em um bucket com versão, uma ação de exclusão em um arquivo realmente não a exclui, mas adiciona uma versão com um "Excluir Marcador". Você pode excluir o marcador de exclusão com a CLI da AWS:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Você pode obter todos os arquivos no balde com
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Se você deseja cancelar a exclusão de todos os arquivos no bucket, tente:
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
se quiser que ele funcione. Ele está assumindo que você está produzindo seu comando da AWS por meio de um arquivo .txt e não do arquivo .JSON.
Acabei de atualizar esta pergunta, pois estava procurando a resposta:
Você pode adicionar VERSIONING aos buckets S3 agora. Isso fará com que o S3 mantenha as versões de um objeto mesmo após a exclusão. Documentação completa: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Agora você pode listar versões de objetos usando o console da AWS: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
Se você tiver as permissões corretas, poderá excluir o marcador de exclusão (a versão mais recente de um objeto excluído) e o resultado será que o objeto está disponível novamente.