2017-11-09 34 views
0

私はpythonのboto3を使ってバケットサブフォルダにアクセスしようとしています。pythonを使ってamazon s3 bucketサブフォルダにアクセス

問題は、ボトムコードの中にサブフォルダ情報を入力する方法がどこにも見つからないということです。

バケット名の付け方はわかりましたが、特定のサブフォルダだけにバケット全体にアクセスすることはできません。誰も私に光を与えることができますか?

BUCKET = "folder/subfolder" 
conn = S3Connection(AWS_KEY, AWS_SECRET) 
bucket = conn.get_bucket(BUCKET) 
for key in bucket.list(): 
    print key.name.encode('utf-8') 

エラーメッセージ:私はこれまでやった

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied 

私はちょうど/一覧表示し、この内のファイルを取得する必要があり、操作のためのbotoを使用する必要はありませんサブフォルダ。

P.S .: cyberduckを使用してファイルにアクセスできます。パスには、folder/subfolderという名前を付けてアクセスします。これは、日付にアクセスできることを意味します。敬具

イスラエル

+0

あなたのコードは、Boto 3ではなくBoto 2.xのようです。 –

+0

boto 3を使用してサブフォルダにアクセスするための情報がどこに表示されますか?私はマニュアルでそれを見つけられませんでした。 :( –

+0

あなたの問題についてはちょっと混乱していますが、パスフォルダー '/サブフォルダ'を入れてサイバーダックを使う*とはどういう意味ですか?*どこに入れますか? –

答えて

0

私は同様のVTLが提案何かを使用して問題を修正:

私はバケツと区切り文字でプレフィックスを入れていました。彼が言ったように、あなたは区切り文字を述べると、また私が行ったようプレフィックス後にそれを配置する必要があり、フォルダ構造が存在しない、

objects = s3.list_objects(Bucket=bucketName, Prefix=bucketPath+'/', Delimiter='/') 

:最終的なコードは次のようなものでした。

返信いただきありがとうございます。

0

試してみてください。

for obj in bucket.objects.filter(Prefix="your_subfolder"): 
    do_something() 

AWSは、実際のディレクトリ構造を持っていない - それは名前だけで "/" sのを入れて1を偽装。 Prefixオプションは、名前が指定された接頭辞で始まるすべてのオブジェクトに検索を制限します。これは "サブフォルダ"にする必要があります。

+0

boto.exception。 S3ResponseError:S3ResponseError:403 Forbidden –

+0

このメッセージが届きました –

関連する問題