使用 PHP 开发工具包删除 Amazon S3 中的版本控制文件

Posted

技术标签:

【中文标题】使用 PHP 开发工具包删除 Amazon S3 中的版本控制文件【英文标题】:Delete versioned files in Amazon S3 using PHP SDK 【发布时间】:2014-09-13 03:01:07 【问题描述】:

我的任务是清理 S3 存储桶上未引用的图像,并发现我们已打开版本控制。

我们目前使用的是 php DSK(版本 '2006-03-01'),according to the documentation 似乎不直接支持删除特定文件的所有版本。

我的问题是这样的:

使用 AWS PHP SDK 中可用的方法删除 S3 存储桶中的版本化文件的正确方法是什么?

可能,我正在考虑使用 listObjectVersions(),然后对每个都运行删除,但我不是 100% 可行。

感谢任何帮助。

【问题讨论】:

【参考方案1】:

正如您所提到的,您需要获取所有对象版本的列表并确定要删除哪些版本。然后,您可以使用单个 API 调用一次删除多个版本(最多 1000 个),而不是逐个删除每个版本。

请参阅Delete Multiple Objects 和Deleting Multiple Objects Using the AWS SDK for PHP 了解更多详情。

不要尝试混合列出和删除操作(列出 1000 个版本、删除 1000、再次列出、再次删除……),因为由于 S3 的最终一致性模型,您最终会得到奇怪的结果。

【讨论】:

感谢您的回复。这听起来很对。我会试一试,看看它是否有效!

以上是关于使用 PHP 开发工具包删除 Amazon S3 中的版本控制文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amazon S3 SDK 更新元数据

Amazon S3 设置元数据使用 AWS SDK PHP v2 upload() 失败

删除 Amazon S3 存储桶? [关闭]

出现错误:getaddrinfo EAI_AGAIN 使用 Amazon S3 开发工具包

使用 Java 开发工具包将多个文件批处理到 Amazon S3

使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据