2016-10-11 15 views
1

を削除私はS3の項目のリストを削除しようとしていますが、API呼び出しからの応答が正しいようだしないことに気づいた:間違ったJSONレスポンスは

APIに従ってresponse削除されたが含まれている必要がありますこの場合のみでリスト:

が成功し、削除のために

コンテナ要素を削除しました。正常に削除された オブジェクトを識別します。

子供:キー、VERSIONID

タイプ:コンテナ

祖先:DeleteResult

delete_jsonは次のとおりです。

{ 
    'Objects':[ 
     { 
     'Key':'test1' 
     }, 
     { 
     'Key':'test2' 
     }, 
     { 
     'Key':'test3' 
     }, 
     { 
     'Key':'test4' 
     } 
    ], 
    'Quiet':False 
} 

Pythonコードを削除するには:

response = self.client.delete_objects(Bucket=s3_bucket, Delete=delete_json) 

と応答がある:それはバグ

{ 
    'Deleted':[ 
     { 
     'DeleteMarkerVersionId':'null', 
     'Key':'test1', 
     'DeleteMarker':True 
     }, 
     { 
     'DeleteMarkerVersionId':'null', 
     'Key':'test2', 
     'DeleteMarker':True 
     }, 
     { 
     'DeleteMarkerVersionId':'null', 
     'Key':'test3', 
     'DeleteMarker':True 
     }, 
     { 
     'DeleteMarkerVersionId':'null', 
     'Key':'test4', 
     'DeleteMarker':True 
     } 
    ], 
    'ResponseMetadata':{ 
     'HostId':'JDl4XNrK02lfBLXCDDIJjuPXG6tOovOp0dtCv7eMlHc0hGC2L7eSV/wb/XRBFyYQ9mHHzb0O/Yg=', 
     'HTTPStatusCode':200, 
     'RequestId':'2F2A9FAE7F906B8' 
    } 
} 

のですか?

+0

これはバージョン管理されたバケットか、以前はバージョン管理されていたバケットですが、バージョン管理が一時停止されていますか? –

+0

「バージョン管理は現在このバケットでサスペンドされています」とマークされています。 、それは問題だろうか? – infinityLoop

+0

私のコメントがちょうど幸運な推測でない限り:)それは重要です。私は説明しようとします。 –

答えて

1

コメントで確認したとおり、このバケットはバージョン管理を有効にしてから、中断されました。

これは、バージョニングが有効になったことがないバケットと同じではありません。バケットにバージョニングが有効になったら、バージョニングされたバケットになりますが、新しいオブジェクト、上書き、および削除のバージョニング動作は異なります。 APIドキュメントから

、あなたが引用ページ:

をバージョン管理がバケツで有効になっているので、Amazon S3は、オブジェクトを削除しません。代わりに、このオブジェクトの削除マーカーを追加します。レスポンスは、削除マーカーが追加されたことを示します(レスポンスのDeleteMarker要素がtrueの値)。追加された削除マーカーのバージョン番号。

この情報を入手し、バージョン管理が中断されたときに必ず従わなければならない動作を追加します。サスペンドされたバケットのバージョニングでは、削除マーカーがどのように機能するのかにより、削除マーカーのバージョン番号はnullです。削除マーカーはオブジェクトのnullバージョン(存在する場合)を置き換え、IDはnullとなります。

http://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectsfromVersioningSuspendedBuckets.html

また、オブジェクトのnullのバージョンでなかった場合、あなたの削除操作は、実際に、目的のオブジェクトを削除していないかもしれないということになります。オブジェクトは削除されたように見えます。

APIの応答が正しいようです。

関連する問題