前缀在S3中是什么意思

What does prefix mean in S3

docs 说,

For example, your application can achieve at least 3,500 PUT/COPY/POST/DELETE and 5,500 GET/HEAD requests per second per prefix in a bucket. There are no limits to the number of prefixes in a bucket. You can increase your read or write performance by parallelizing reads. For example, if you create 10 prefixes in an Amazon S3 bucket to parallelize reads, you could scale your read performance to 55,000 read requests per second.

但是,它并没有明确提到前缀的概念。

例如,

假设我有 3 个文件,它们对应的键是:

a/a1.txt
b/b1.txt
2.txt

据我了解,S3中没有文件夹的概念。所以,S3 将在我的存储桶上创建类似这样的东西。

|- a/
|- a1.txt
|- 2.txt
|- b/
|- b1.txt

我确实遇到过这个 blog 但它让我更加困惑。

我的问题:-

在 S3 中创建的每个以“/”结尾的对象都是前缀吗? 换句话说,我们在 S3 Web 控制台中看到的每个文件夹都是一个前缀吗?

虽然S3在理论上是一个平面存储,但是它的很多操作对于带有集合分隔符的前缀有特殊的处理,通常是/。例如 this help page 讨论了如何通过查看您使用的前缀来构建 S3 控制台 Web 界面上的 "folders"。

这里要记住的重要一点是这些文件夹本身不是对象,因此在您的示例中,存储桶中没有存储 ab 的键。

如果您创建一个存储桶并立即添加一个键为 a/b/c/d/e.txt 的对象,那么:

  • 桶将只包含一个对象,键为 a/b/c/d/e.txt
  • 一些 API 和 UI 会推断 a/b/c/d 键的前缀,作为对相关键进行分组的一种方式