Odpowiedzi:
Według dokumentacji Amazon S3:
Po usunięciu nie ma metody przywracania lub przywracania obiektu.
Jeśli masz włączoną kontrolę wersji, tak, możesz! W wersjonowanym segmencie operacja usuwania pliku tak naprawdę go nie usuwa, ale dodaje wersję z „Usuń znacznik”. Możesz usunąć znacznik usuwania za pomocą interfejsu AWS CLI:
aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker
Możesz pobrać wszystkie pliki do wiadra za pomocą
aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt
Jeśli chcesz cofnąć usunięcie wszystkich plików w wiadrze, możesz spróbować:
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
jeśli chcesz, aby działał. Zakłada, że wypisujesz swoje polecenie AWS przez plik .txt, a nie plik .JSON.
Właśnie aktualizowałem to pytanie, gdy szukałem odpowiedzi:
Możesz teraz dodać WERSJĘ do wiader S3. Spowoduje to, że S3 zachowa wersje obiektu nawet po usunięciu. Pełna dokumentacja: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
Możesz teraz wyświetlić listę wersji obiektów za pomocą konsoli AWS: http://docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versoted-bucket.html
Jeśli masz odpowiednie uprawnienia, możesz usunąć znacznik usuwania (najnowsza wersja usuniętego obiektu), w wyniku czego obiekt będzie ponownie dostępny.