Risposte:
Secondo la documentazione di Amazon S3:
Una volta eliminato, non esiste alcun metodo per ripristinare o ripristinare un oggetto.
Se hai abilitato il controllo delle versioni, sì, puoi farlo! Su un bucket con versione, un'azione di eliminazione su un file non lo elimina realmente ma aggiunge una versione con un "Elimina marcatore". Puoi eliminare il marker di eliminazione con l'interfaccia della riga di comando di AWS:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Puoi ottenere tutti i file nel bucket con
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Se vuoi ripristinare tutti i file nel bucket puoi provare:
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 si desidera che funzioni. Suppone che stai emettendo il tuo comando AWS tramite un file .txt e non .JSON.
Ho appena aggiornato questa domanda mentre cercavo la risposta:
Ora puoi aggiungere VERSIONING ai bucket S3. Ciò farà sì che S3 mantenga le versioni di un oggetto anche dopo la cancellazione. Documentazione completa: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Ora puoi elencare le versioni degli oggetti utilizzando la console AWS: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
Se si dispone delle autorizzazioni giuste, è possibile eliminare il marker di eliminazione (l'ultima versione di un oggetto eliminato) e il risultato sarebbe che l'oggetto sarà nuovamente disponibile.