2015-10-01 45 views
1

我的Amazon S3存儲桶的文件夾結構如下所示。如何在不知道包含文件夾的情況下在Amazon S3存儲桶中找到文件

  • 水桶名\ 00001 \ FILE1.TXT
  • 水桶名\ 00001 \ file2.jpg
  • 水桶名\ 00002 \ file3.doc
  • 水桶名\ 00001 \文件4。 PPT

如果我只知道文件名file3.doc和剷鬥名鬥名我如何可以搜索file3.doc我n 桶名稱。如果我知道,它在文件夾,我可以簡單地去文件夾並開始輸入文件名,但我無法知道我正在搜索的文件在哪個文件夾下。

+1

不幸的是我認爲你的選擇是有限的。遞歸循環可能是你最好的。 S3不應該以這種方式使用 –

+0

你希望以編程方式獲得它,還是命令行充足?在什麼情況下你在尋找這個文件(例如,它是一次性的請求,常規的工作,更大的應用程序的一部分,等等)? –

回答

2

你可能需要使用命令行工具,如s3cmd如果你不知道它在哪裏都:

s3cmd --recursive ls s3://mybucket | grep "file3" 

但一些有限的搜索是可能的:

https://stackoverflow.com/a/21836343/562557

+1

目前,通常建議使用[AWS Command-Line Interface(CLI)](http://aws.amazon.com/cli/),它具有適用於所有AWS服務(不僅僅是Amazon S3)的功能。 –

0

僅使用AWS CLI,可以使用參數--query針對存儲桶運行list-objects。這不會是一個快速操作,因爲它在獲取文件列表之後在本地運行,而不是在s3的api中運行。

$ aws s3api list-objects --bucket bucket-name --query "Contents[?contains(Key, 'file3')]" 

[ 
    { 
     "LastModified": "2017-05-31T20:36:28.000Z", 
     "ETag": "\"b861daa5cc3775f38519f5de6566cbe7\"", 
     "StorageClass": "STANDARD", 
     "Key": "00002/file3.doc", 
     "Owner": { 
      "DisplayName": "owner", 
      "ID": "123" 
     }, 
     "Size": 27032 
    } 
] 

使用--query經過短短管道到grep的好處是,你會得到充分反應包括通常包含在list-objects所有可用的元數據,而不必猴子周圍之前和grep的參數之後。

有關詳細信息,請參見Finding Files in S3的此帖子,其中包括一個類似示例,該示例顯示具有相同名稱的文件最終位於不同目錄中時具有元數據的好處。

相關問題