2015-12-10 36 views
6

Depolama düz olduğundan S3 kovalarının gerçekten dizinleri olmadığını biliyorum. Ama python/boto3 ile programatik olarak dizinler oluşturmak mümkündür, fakat nasıl olduğunu bilmiyorum. Ben bir belgesel üzerinde gördüm:python, boto3 kullanarak Amazon S3 dizinleri oluşturma

"S3 depolama düz olmasına rağmen. Kovalar S3 Eğer anahtarlarında bir sınırlayıcı kullanarak kova üzerinde bir dizin ağaç yapısını empoze Örneğin, bir isim ise izin verir, anahtarları içerir 'a/b/f' anahtarını ve '/' sınırlayıcı olarak kullanın, sonra S3 'a' bir dizin, 'b' 'a' alt dizinidir ve 'f' bir dosyadır. 'b' içinde. " Ben oluşturabilir

sadece bir S3 Kova içinde dosyaları:

self.client.put_object(Bucket=bucketname,Key=filename) 

ama bir dizin oluşturmak için nasıl bilmiyorum.

+1

Cevap, kopyaladığınız alıntıdır. Yapman gerektiğini söylediklerini yapmaya çalıştın mı? –

cevap

5

Anahtar adda küçük bir değişiklik yapılması gerekiyor.

bu self.client.put_object(Bucket=bucketname,Key=filename)

self.client.put_object(Bucket=bucketname,Key=directoryname/filename)

İşte tüm şekilde değiştirilmelidir.

8

API belgelerini okuyorsanız, bunu yapabilmeniz gerekir.

import boto3 
s3 = boto3.client("s3") 
BucketName = "mybucket" 
myfilename = "myfile.dat" 
KeyFileName = "https://stackoverflow.com/a/b/c/d/{fname}".format(fname=myfilename) 
with open(myfilename) as f : 
    object_data = f.read() 
    client.put_object(Body=object_data, Bucket=BucketName, Key=KeyFileName) 

Dürüst, değil organizasyon için "gerçek dizin", ama preformat dize yapıdır.