当前位置: 首页 > 知识库问答 >
问题:

AWS S3:在一次调用中从版本化存储桶中删除对象的所有版本

宋翔
2023-03-14

我在aws docs/几个网站/stackoverflow上搜索了这个主题,但没有找到任何答案。

我想在一次调用中删除受版本控制的 s3 存储桶中对象的所有版本。

  • 我不想删除删除标记
  • 我也不希望删除对象的单个版本
  • 我也不想首先查询对象的所有版本,然后发送DeleteObjectsAsync请求

有没有什么方法可以删除一个对象的所有版本,不管它有没有删除标记,只要用S3的. net SDK调用AWS就可以了?

共有2个答案

蔚宏大
2023-03-14

对此没有单一的呼吁。甚至AWS也为您提供了“遍历所有版本”的示例作为解决方案:https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-or-empty-bucket.html#delete-bucket-sdk-java

郗浩
2023-03-14

我为我的一个客户做了同样的事。我们使用S3存储单个文件的多个版本。在网上冲浪了很多次之后,我找不到任何方法。最好的方法是循环S3文件版本。有用的步骤:

  1. 获取要删除的对象的所有版本。
  2. 循环到这些版本并逐个删除。

注意:我观察到S3的一个奇怪行为,在删除一个对象的所有版本后,我有时会发现正在创建一个Delete Marker。当然,如果你从S3控制台删除文件,你会得到一个删除标记。但在我的情况下,通过NodeJ做这件事,我只发现了几次。因此,您需要在代码中处理这一点。这是我在NodeJS中做的

        if (data.Deleted.DeleteMarker) {
          console.log('Found delete marker', data.Deleted.DeleteMarker);
          //Handle here to delete the deleteMarker
          }

谢谢,如果有帮助,请投票。

 类似资料:
  • 问题内容: 我想用来编码大量数据,而不必一次将所有数据加载到内存中。 我以为json包中内置了此功能,但事实并非如此。 操场 我目前只是在自己构建json字符串。 操场 有一个更好的方法吗? 如果json.Marshaler像这样,那将是微不足道的。 问题答案: 不幸的是,该程序包还没有办法做到这一点。您现在(手动)执行的操作是执行此操作的最佳方法,而无需修改内置程序包。 如果要打补丁,则可以在e

  • 问题内容: 我试图从两个文件中读取并将它们存储在两个单独的arraylist中。文件由单词组成,这些单词要么单独一行,要么多个单词之间用逗号分隔。我用以下代码读取每个文件(不完整): 我现在需要读入两个文件,并从第一个文件中删除所有单词,该单词也存在于第二个文件中(文件中有一些重复的单词)。我已经尝试过for- loops和其他类似的东西,但是没有任何效果,因此将不胜感激! 额外的问题:我还需要找

  • 我试图打印桶中的所有对象,但我得到一个错误。 线程“main”com中出现异常。amazonaws。服务。s3.型号。AmazonS3异常:状态代码:301,AWS服务:Amazon S3,AWS请求ID:758A7CBF1A29FD74,AWS错误代码:PermanentRedirect,AWS错误消息:您尝试访问的存储桶必须使用指定的endpoint寻址。请将所有未来的请求发送到此终结点。,S

  • 问题内容: 我创建了许多对象,然后将它们存储在列表中。但是我想在一段时间后删除它们,因为我创建了一个新闻,并且不希望我的内存过高(就我而言,如果不删除它,它会跳到20 gigs的内存)。 这里有一些代码来说明我要做什么: A和B是我的对象。C是这两个对象的列表。我正在尝试使用C中的for循环将其删除:一次是使用DEL,另一次是使用一个函数。它似乎不起作用,因为打印继续显示对象。 我需要这个,因为我

  • 问题内容: 使用Java获取S3存储桶中所有项目列表的最简单方法是什么? 本示例仅返回1000个项目。 问题答案: 可能是一种解决方法,但这解决了我的问题:

  • 问题内容: 我在Maven中有5个模块的项目。现在,当我执行“ mvn全新安装”时,它将生成一个耳朵,其中包含两个罐子,一个war和一个来自其他模块的sar。 所有文件名都包含版本,例如projectx-ear-2.0.0.ear,projectx-client-2.0.0.jar等。 我需要重命名其中一个jars和最后一个耳朵,以省略文件名中的版本。它看起来应该像这样: 现在,我正在使用以下插件

  • 问题内容: $(“#topNav” + $(“#breadCrumb2nd”).text().replace(” “, “”)).addClass(“current”); 这是我的代码的一部分。我想在获取另一个ID的text属性后向ID添加一个类。问题在于,持有我需要的文本的ID包含字母之间的空格。 我希望删除空白。我已经尝试过,但这只能部分起作用。该只删除第一个空间。 问题答案: 您必须告诉re

  • 所以。烦人。 为简洁起见编辑: 类似问题的答案state将修复问题,但我做错了吗?因为它说它不匹配任何文件?也许是因为我运行了git重置?