php - Amazon S3 删除标记

标签 php amazon-web-services amazon-s3 amazon

我为 Amazon S3 中的某些文件设置了 Web 存储。我正在使用它的 PHP SDK 来管理这些文件。我有一个自动化脚本运行以在一段时间后从某个存储桶中删除文件。我刚刚意识到我不相信它实际上是在删除文件,而是用删除标记替换它们。当我使用传输 (Mac) 之类的程序查看存储桶时,它会列出自 2013 年我设置脚本以来的所有文件。但是,如果我在浏览器中进入管理界面,它只会列出我在脚本中设置的截止时间之前的文件。

我的问题是:当我不需要实际保留任何这些文件时,我是否为这些标记的存储支付了更多的钱?以及如何永久删除这些文件?我发现的一切都是,这只是版本化存储桶的问题,但这个特定存储桶没有版本化。根据文档,我需要在删除调用中包含对象的版本 ID 以删除标记,但此时,由于“listObjects”不返回这些信息,我该如何检索该信息。

提前致谢!

编辑:我还应该提到,如果我使用传输来拉下一个“已删除”的文件,该文件仍然会打开并且运行起来就好像它从未被删除过一样。

最佳答案

如果在 Amazon S3 存储桶上启用了版本控制,则对象到现有 key 名称的所有上传都将导致创建该对象的附加版本。之前的版本将保留在 Amazon S3 上。删除一个对象会添加一个 删除标记 ,因此该对象似乎已被删除,但仍可下载以前的版本。

如果 Bucket 启用了版本控制,您可以在控制台中查看对象版本和删除标记:

  • 在 Amazon S3 控制台中访问您的存储桶
  • 寻找 版本 屏幕顶部的按钮。它应该有两个按钮:显示 , 隐藏
  • 选择 显示将显示删除标记和所有先前版本的对象

  • 在一段时间后从 Amazon S3 中删除对象的更简单方法是:
  • 选择您的存储桶
  • 开通 属性
  • 点击生命周期
  • 创 build 置为 的规则永久删除对象创建日期后 n 天
  • 关于php - Amazon S3 删除标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003695/

    相关文章:

    PHP MYSQL PDO BLOB上传总是空零字节

    amazon-web-services - 我可以安排Docker在特定时间在Amazon ECS上运行吗?

    amazon-s3 - 亚马逊 s3 静态网络托管缓存

    php - 将大量数组数据插入DB

    php - 如何创建PHP Mysql日报而不重复代理名称?

    mysql - 使用node.js应用程序配置AWS RDS实例

    amazon-web-services - 根据搜索表达式创建 CloudWatch 警报

    amazon-web-services - 如何使用公共(public)IP获取Windows Server的SSL证书?

    apache-spark - pyspark 兼容版本 2.4.4 的 hadoop aws 和 aws sdk

    javascript - 将 ng-repeat 中的值与 php 值进行比较