回答:
バージョン管理を有効にしている場合は、できます!バージョン管理されたバケットでは、ファイルに対する削除アクションは実際には削除しませんが、「マーカーの削除」付きのバージョンを追加します。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;
--output=text
場合はを追加する必要があります。彼は、.JSONファイルではなく.txtファイルを介してAWSコマンドを出力していると想定しています。
私は答えを探していたので、この質問を更新するだけです:
VERSIONINGをS3バケットに追加できるようになりました。これにより、S3は削除後もオブジェクトのバージョンを保持します。完全なドキュメント:http : //docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html
AWSコンソールを使用してオブジェクトバージョンを一覧表示できるようになりました:http : //docs.aws.amazon.com/AmazonS3/latest/UG/managing-objects-versioned-bucket.html
適切な権限がある場合は、削除マーカー(削除されたオブジェクトの最新バージョン)を削除できます。その結果、オブジェクトが再び使用可能になります。