【问题标题】:What's the difference between KeyMarker and Prefix?KeyMarker 和 Prefix 有什么区别?
【发布时间】:2020-08-10 07:24:53
【问题描述】:

我正在尝试获取所有对象,包括同一对象的不同版本。根据aws official documents,有PrefixKeyMarker。我看不出它们之间有什么特别的区别。如下所示,

  • KeyMarker —(字符串) 指定列出存储桶中的对象时开始使用的键。
  • 前缀 —(字符串) 使用此参数仅选择那些以指定前缀开头的键。您可以使用前缀将存储桶分成不同的键组。 (您可以考虑使用前缀来创建组,就像在文件系统中使用文件夹一样。)您可以使用带分隔符的前缀将多个对象汇总到 CommonPrefixes 下的单个结果中。

如果可能,我希望您举个例子来了解它。谢谢。

仅供参考)我举了一个例子,比如我的存储桶名称是example,我的文件位于存储桶中的app/a.json。在这种情况下,它可以使用参数{ Bucket: "example", "Prefix": "app/a.json" } 调用listObjectVersions,但不能使用{ Bucket: "example", "KeyMarker": "app/a.json" }

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    这两者之间有相当大的区别,尽管我可以看到很容易与术语混淆。

    前缀

    这用于基于开始模式限制对象的请求,所有 S3“文件路径”实际上是整个键。

    因此,如果您想检索基于文件的系统上存在于系统根目录中的 docs 文件夹中的所有内容,则在 S3 中,您将引用 docs/* 的前缀来获取所有具有以开头的键的对象docs/.

    KeyMarker

    这可以结合或单独使用前缀,归结为当您的列表对象请求返回太多要列出的对象时,它会分页返回对象和名为NextKeyMarker的属性。

    您将使用此属性再次执行相同的请求,但这次将NextKeyMarker 的值添加为您的KeyMarker。这实际上会返回以您指定的键开始的下一页。

    【讨论】:

    • 这么好的解释!谢谢
    • 没问题,祝你有美好的一天:)
    猜你喜欢
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    • 2013-08-19
    相关资源
    最近更新 更多