删除在密钥中使用不可打印字符创建的 S3 对象


Deleting S3 objects created with non-printable characters in the Key?

在使用 AWS PHP SDK (v2( 时,我不小心创建了一堆附加了"''r'"的对象。 我可以在 AWS 控制台、S3 浏览器和 Cloudberry Explorer 中看到这些对象。 浏览器将文件扩展名显示为,例如,JPG%0D%0A。 通过这些工具删除这些对象的所有尝试都将失败。

我可以通过以下方式成功列出对象: $objects = $s3->getIterator('ListObjects', array('Bucket' => $bucket));

将返回的对象传递给

$result = $s3->deleteObject(array(
        'Bucket' => $bucket,
        'Key'    => $object['Key']"
        ));

不会删除它们,并且似乎没有有意义的错误消息。

有谁知道任何其他方法(也许通过版本id(来删除具有不可打印字符的对象? 甚至是如何打印$result的样本?

请温柔一点。 我是PHP n00b。:)

虽然不是直接的解决方案,但我最终将存储桶的生命周期设置为一天,这奏效了。 不是很优雅,但至少它解决了。

关于为什么您可以创建具有不可打印字符但无法删除它们的密钥的问题仍然存在。