如何使用Amazon S3的boto
庫在存儲桶下創建文件夾?亞馬遜S3博託 - 如何創建一個文件夾?
我遵循手冊,並創建了具有權限,元數據等的密鑰,但沒有在博託的文檔中介紹如何創建文件夾下的文件夾,或創建文件夾下的文件夾。
如何使用Amazon S3的boto
庫在存儲桶下創建文件夾?亞馬遜S3博託 - 如何創建一個文件夾?
我遵循手冊,並創建了具有權限,元數據等的密鑰,但沒有在博託的文檔中介紹如何創建文件夾下的文件夾,或創建文件夾下的文件夾。
S3中沒有文件夾或目錄的概念。您可以創建像"abc/xys/uvw/123.jpg"
這樣的文件名,許多S3訪問工具(如S3Fox
)顯示爲一個目錄結構,但它實際上只是一個存儲桶中的單個文件。
謝謝你的答案,所以我想如果我想看到一個特定文件夾的內容,我將需要遍歷許多其他不必要的文件? – 2010-01-27 23:50:43
S3 API允許您爲存儲桶查詢具有給定前綴的鍵。所以你應該能夠構造一個只返回邏輯文件夾中的對象的請求。請參閱:http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?ListingKeysHierarchy.html – 2010-07-22 19:58:31
有非常明確的文件夾概念。答案是不正確的..請參閱下面的elranu答案。 – 2014-03-28 09:49:33
追加「_ $文件夾$」到您的文件夾名稱和調用put。
String extension = "_$folder$";
s3.putObject("MyBucket", "MyFolder"+ extension, new ByteArrayInputStream(new byte[0]), null);
這種創建文件夾的方式不再有效。您應該嘗試@TomNg – radalin 2016-06-16 14:33:00
有了AWS SDK淨完美的作品,只要加入 「/」 的文件夾名稱字符串的結尾:
var folderKey = folderName + "/"; //end the folder name with "/"
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey);
var request = new PutObjectRequest();
request.WithBucketName(AWSBucket);
request.WithKey(folderKey);
request.WithContentBody(string.Empty);
S3Response response = client.PutObject(request);
然後刷新您的AWS控制檯,你會看到文件夾
S3沒有文件夾結構,但有一些稱爲鍵。
我們可以創建/2013/11/xyz.xls
,並在控制檯中顯示爲文件夾。但S3的存儲部分將把它作爲文件名。
即使在檢索時,我們仍然可以使用ListObjects
方法和Prefix
參數查看特定文件夾(或多個鍵)中的文件。
假設你想創建Abc文件夾/ 123 /在你的水桶,這是一塊蛋糕與博託
k = bucket.new_key('abc/123/')
k.set_contents_from_string('')
或者使用console
這是正確的答案。這可能與博託,這是你如何做到這一點。其實''new_key()'是你所需要的。發送給函數的字符串可以是'abc/123 /'或'abc/123/newfile.txt'。無論你喜歡什麼。在我嘗試獲得我希望的結果後,我喜歡在if語句中包裝它:'key = bucket.get_key(upgrade_path) 如果key爲None: key = bucket.new_key(upgrade_path)'基本上,if它不在那裏,創造它! – 2015-01-16 02:25:26
使用最新的api,bucket.key('abc/123 /')也會達到相同的結果。 – light94 2015-05-15 10:03:47
指定一個目錄密鑰也適用於上傳**分段上傳文件**'''mp = self._bucket。initiate_multipart_upload(bucket_key)''' – 2016-08-09 17:57:16
顯然,你可以在S3現在創建文件夾。我不知道從何時開始,但我在「標準」區域有一個存儲桶,並且可以選擇從操作下拉菜單中創建文件夾。
創建文件夾非常簡單。其實它只是創造鑰匙。
你可以看到我的下面的代碼,我正在創建一個名爲utc_time的文件夾。
清楚地記得結束與'/'像下面的關鍵,這表明它是一個關鍵:
重點= '文件夾1 /' + UTC_TIME + '/'
client = boto3.client('s3')
utc_timestamp = time.time()
def lambda_handler(event, context):
UTC_FORMAT = '%Y%m%d'
utc_time = datetime.datetime.utcfromtimestamp(utc_timestamp)
utc_time = utc_time.strftime(UTC_FORMAT)
print 'start to create folder for => ' + utc_time
putResponse = client.put_object(Bucket='mybucketName',
Key='folder1/' + utc_time + '/')
print putResponse
雖然您可以通過將「/」附加到您的folder_name來創建一個文件夾。在引擎蓋下,S3不像普通的NFS那樣保持平坦的結構。
var params = { Bucket : bucketName, Key : folderName + "/" }; s3.putObject(params, function (err, data) {});
使用此:
import boto3
s3 = boto3.client('s3')
bucket_name = "YOUR-BUCKET-NAME"
directory_name = "DIRECTORY/THAT/YOU/WANT/TO/CREATE" #it's name of your folders
s3.put_object(Bucket=bucket_name, Key=(directory_name+'/'))
感謝您的幫助,我得到了以下錯誤。你能幫我嗎.botocore.exceptions.NoCredentialsError:無法找到憑證 – Anvesh 2017-12-18 07:19:14
你能分享你的代碼嗎? – 2017-12-18 07:59:03
似乎Amazon S3上沒有文件夾的概念,一些建議建立包含「文件夾/ test.txt的」名關鍵要解決它,我嘗試使用firefox s3插件來創建文件夾,並列出所有鍵在博託,它輸出文件夾我剛創建爲「<鍵:vitoshares,everyone_ $文件夾$>],所以如何查看/添加/修改內容到/從這個文件夾? – 2009-12-21 12:29:15
注意:用於創建「文件夾」的AWS S3管理界面選項與S3FS不兼容,即使用界面創建「文件夾」並嘗試通過S3FS掛載點獲取所述文件夾的列表。 – jldupont 2013-02-17 12:49:58
注2:通過S3FS創建「文件夾」與AWS S3管理界面兼容。 – jldupont 2013-02-17 12:52:52