2016-10-05 61 views
0

我在S3對象中存儲自定義元數據(我在meta x-amz-metadata-description中存儲了對該文件的描述)。檢索S3對象元數據(NodeJS API)的最新方法

我想用S3對象屬性(包括元數據)檢索文件列表。

我認爲s3.listObjectsV2可以幫助我,但似乎這種方法無法檢索元數據(參見官方文檔here

我看到了,我可以檢索getObjects那些medata,但它會增加很多數量的呼叫和請求的延遲。

您是否有任何想法批量檢索對象列表的元數據?

謝謝, 羅曼。

回答

0

你需要aws s3api head-object這不正是你想要

什麼HEAD操作從對象檢索元數據,而無需返回對象本身。如果您只對對象的元數據感興趣,此操作很有用。要使用HEAD,您必須具有對該對象的讀取權限。

aws s3api head-object --bucket <mybucket> --key <value> 

也正是在的NodeJS API可用,見http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#headObject-property

的方法是每個鍵調用一次,如果你需要爲你叫需要cupple與其他方法的多個項目,可以說,作爲一個例子,你需要從你的水桶所有的CSV文件中的所有元數據,你會運行

aws s3 ls --recursive <mybucket> \ 
| grep ".csv$" | cut -c 32- \ 
| xargs -I {} aws s3api head-object --bucket <mybucket> --key {} 

命令列表從桶中的所有文件,你只用grep特定擴展,ST的第一部分撕掉字符,以便只獲取密鑰,並將此密鑰作爲頭對象命令的參數

+0

嗨!謝謝。是否可以在批量模式下使用此方法?如果答案是否定的,我將不得不進行很多電話。 –

+0

嗨,不,你不能批量調用,它適用於給定的鍵(這是有道理的),如果你需要批量調用,你首先需要選擇你想要執行調用的所有元素 - 舉一個例子 –