2015-12-10 58 views
6

私はS3バケットが実際にはストレージがフラットなのでディレクトリがないことを知っています。しかし、python/boto3でディレクトリをプログラム的に作成することは可能ですが、どうすればよいのか分かりません。Amazon S3でpythonを使用してディレクトリを作成する、boto3

"S3ストレージはフラットです:バケットにはキーが含まれていますが、S3ではキーの区切り文字を使用してバケットにディレクトリツリー構造を適用できます。 たとえば、キー 'a/b/f'を使用し、 '/'をデリミタとして使用すると、S3では 'a'がディレクトリ、 'b'が 'a'のサブディレクトリ、 'f'がファイル「b」で。

私はでS3バケット内のファイルだけを作成することができます。

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

が、私はディレクトリを作成する方法がわかりません。

+1

答えはあなたがコピーした見積もりにあります。彼らは、あなたがするように言うことをやってみましたか? –

答えて

5

キー名を少し変更する必要があります。 self.client.put_object(Bucket=bucketname,Key=filename)

これは、すべてのザッツ

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

に変更する必要があります。

8

APIドキュメントを読む場合は、これを行う必要があります。

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) 

正に、実際のディレクトリではありませんが、組織のためのプリフォーマットの文字列構造です。

関連する問題