繁体   English   中英

Amazon AWS S3 Glacier:是否有文件层次结构

[英]Amazon AWS S3 Glacier: is there a file hierarchy

Amazon AWS S3 Glacier 是否支持 Vault for Archives 中的某些文件层次结构?

例如,在 AWS S3 中,对象通过/被赋予层次结构。 例如: all_logs/some_sub_category/log.txt

我正在存储多个.tar.gz文件,并希望:

  • 同一 Vault 中的所有文件
  • 在 Vault 中,文件分为几个类别(与平面结构相反)

我在任何地方都找不到如何做到这一点。 如果 S3 Glacier 中的文件层次结构是可能的,您能否提供有关如何执行此操作的简要说明?

Amazon AWS S3 Glacier 是否支持 Vault for Archives 中的某些文件层次结构?

不,除了“档案存在于保险库中”之外,没有其他层次结构。

例如,在 AWS S3 中,对象通过 / 被赋予层次结构。 例如:all_logs/some_sub_category/log.txt

这实际上是不正确的。

S3 没有任何固有的层次结构。 字符/与对 S3 Object 的键有效的任何其他字符绝对没有区别。

S3 控制台——以及大多数 S3 客户端工具,包括 AWS 的 CLI——以特殊的方式处理/字符。 但请注意,这是客户端的事情。 客户端将确保列表以/的行为方式与大多数人期望的一样,即作为“层次分隔符”。

如果 S3 Glacier 中的文件层次结构是可能的,您能否提供有关如何执行此操作的简要说明?

您需要单独跟踪您的层次结构。 例如,当您在 Glacier 中存储档案时,您可以将有关该档案的元数据写入数据库(RDS、DynamoDB 等)。


作为旁注,请注意 Glacier 中的.tar.gz ,特别是如果您正在谈论 (1) 一个非常大的存档 (2),它由您可能想要的大量小型单个文件 (3) 组成单独访问。

如果满足这些条件(根据我的经验,它们通常是在现实场景中),那么在检索数据时使用.tar.gz通常会导致成本过高。

原因是您按请求数量和请求大小付费。 因此,虽然拥有一个巨大的.tar.gz文件可能会降低您在请求数量方面的成本,但 gzip 使用 DEFLATE(一种不可分割的压缩算法)这一事实意味着您必须检索整个.tar.gz存档,解压,最后得到你真正想要的一个文件。

解决我上面描述的问题的另一种方法——同时,这与你的问题和我的答案相关——实际上是首先 gzip 单个文件,然后将它们打包在一起。 解决问题的原因是,当您将文件打包在一起时,各个文件实际上在 tarball 中具有明确的界限。 然后,当您请求从 Glacier 检索时,您只能请求一定范围的存档。 例如,您可以说, “Glacier,给我档案 X 的 105MB 到 115MB 之间的字节数” 这样,您可以 (1) 减少请求的总数(因为您有一个 tar 文件),以及 (2) 减少请求和存储的总大小(因为您有压缩数据)。

现在,要知道您需要检索哪个范围,您需要将元数据存储在某个地方——通常是您保存层次结构的同一个地方(就像我上面提到的,RDS、DynamoDB、Elasticsearch 等)。

无论如何,只是一个可以在未来节省大量资金的优化(我曾与大量客户合作过,因为他们不知道这一点而浪费了很多钱)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM