PHP用のAWS SDK、バージョン2.4.7をコンポーザを使用してインストールしています。 S3バケットからファイルを削除した後、S3から実際にファイルが削除されても、応答オブジェクトのDeleteMarkerキーは常に空になります。ドキュメントには、操作が成功した場合はDeleteMarkerがtrueである必要があり、それ以外の場合はfalseであることが示されています。S3 DeleteObject - DeleteMarkerは常に空を返します
// delete S3 object
$result = $s3->deleteObject(array(
'Bucket' => $this->_bucket,
'Key' => $object_key,
));
と応答は次のとおりです:
私の削除の呼び出しがある
Guzzle\Service\Resource\Model Object
(
[structure:protected] =>
[data:protected] => Array
(
[DeleteMarker] =>
[VersionId] =>
[RequestId] => 2CC3EC60C4294CB5
)
)
私は、そうした場合:
// check if was deleted
$is_deleted = (bool) $result->get('DeleteMarker');
$ is_deletedは常にfalseです。削除操作が実際に成功し、ファイルがS3から削除されたにもかかわらず、DeleteMarkerキーに対して値が返されないのはどうしてですか?
UPDATE:
私は私のキーの先頭にスラッシュを追加した場合、私は、ファイルがまだS3から削除されていても戻って偽の応答を取得します。 DeleteMarkerで キー「/path/to/my/image.jpg」の結果が空の偽
を持つ。しかし、両方のケースでは空の値を持つDeleteMarkerで
キー「パス/に/私/ image.jpg」の結果イメージはS3バケットから削除されます。
この同じ問題があります。あなたはこれを解決しましたか? – Scott
いいえ、決して解決されませんでした。バケツのバージョニングを有効にしたくないので、Simonが以下に示唆しているようにして、削除呼び出し後にファイルが存在するかどうかを確認するために2番目の呼び出しを発行します。それが成功したかどうかを私が知っていれば、これを削除して知ることができれば、それは良いことではないでしょう。 –