簡體   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