[英]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
文件,並希望:
我在任何地方都找不到如何做到這一點。 如果 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.