amazon-web-services - 亚马逊 AWS S3 冰川 : is there a file hierarchy

标签 amazon-web-services amazon-s3 bucket amazon-glacier

Amazon AWS S3 Glacier 是否支持文件库内的某种文件层次结构?

例如,在 AWS S3 中,对象通过 / 被赋予层次结构。 .例如:all_logs/some_sub_category/log.txt
我正在存储多个 .tar.gz文件,并希望:

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

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

    最佳答案

    Does Amazon AWS S3 Glacier support some semblance of file hierarchy inside a Vault for Archives?



    不,除了“文件库内存在文件”之外,没有其他层次结构。

    For example, in AWS S3, objects are given hierarchy via /. For example: all_logs/some_sub_category/log.txt



    这实际上是不正确的。

    S3 没有任何固有的层次结构。人物/与对 S3 对象的键有效的任何其他字符完全没有区别。

    S3 控制台——以及大多数 S3 客户端工具,包括 AWS 的 CLI——处理 /以一种特殊的方式塑造性格。但请注意,这是客户端的事情。客户将确保列表以这样一种方式发生,即 /正如大多数人所期望的那样,即作为“层次结构分隔符”。

    If file hierarchy inside S3 Glacier is possible, can you provide brief instructions for how to do so?



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

    作为旁注,请注意 .tar.gz在 Glacier 中,尤其是当您谈论 (1) 一个非常大的存档 (2) 时,该存档 (2) 由大量您可能希望单独访问的小型单个文件 (3) 组成。

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

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

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

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

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

    关于amazon-web-services - 亚马逊 AWS S3 冰川 : is there a file hierarchy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096988/

    相关文章:

    amazon-web-services - EIP : AddressLimitExceeded

    android - 使用 Amazon S3 TransferUtility 文件作为 Fresco 的图像源

    amazon-s3 - Amazon S3 上每个目录的最大文件数

    c++ - boost::unordered_multimap:有效地获取桶中的所有元素?

    C桶字符串

    google-cloud-storage - 文件夹未显示在存储桶存储中

    ruby - S3 预签名帖子需要特定的内容类型

    在 Amazon Aws EC2 上复制到 HDFS 时出现 Hadoop 警告和错误

    Amazon EMR 上的 Python 映射器

    scala - 在 EMR 上使用 Spark 写入 S3 中的文件