S3バケットから削除したファイルを復元することはできますか?
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;
私が答えを探していたので、この質問を更新しました:
S3バケットにVERSIONINGを追加できるようになりました。これにより、S3は削除後もオブジェクトのバージョンを保持します。完全なドキュメント: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
AWSコンソールを使用してオブジェクトのバージョンを一覧表示できるようになりました http://docs.aws.Amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
適切な権限がある場合は、削除マーカー(削除されたオブジェクトの最新バージョン)を削除できます。その結果、オブジェクトが再び使用可能になります。