2013-07-08 156 views
3

我想使用boto和python將文件上傳到特定位置。我正在訪問使用這種效果:通過boto連接到'文件夾's3

from boto.s3.connection import S3Connection 
from boto.s3.key import Key 


conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
bucket = conn.get_bucket('the_bucket_name') 
for key in bucket: 
    print key.name 

這是關鍵。我已將配額憑證提供給存儲桶中的「文件夾」。按此 - Amazon S3 boto - how to create a folder?據我所知,實際上s3中沒有文件夾,而是諸如「foo/bar/my_key.txt」之類的鍵。當我嘗試執行get_bucket()我得到

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

因爲我不確實有憑據基地桶,而桶鍵的子集。 my_bucket/the_area_I_have_permission/*

有誰知道我可以通過我在連接步驟中訪問的存儲桶中的特定「區域」嗎?或者我可以用其他方法訪問my_bucket/the_area_I_have_permission/*

回答

2

這是否幫助:

bucket = conn.get_bucket('the_bucket_name',validate=False) 

key = bucket.get_key("ur_key_name") 
if key is not None: 
    print key.get_contents_as_string() 

keys = bucket.list(prefix='the_area_I_have_permission') 
for key in keys: 
    print key.name 
+0

感謝您的回覆。不。得到了TypeError:get_key()得到了一個意外的關鍵字參數'prefix',第一個和boto.exception.S3ResponseError:S3ResponseError:403第二個禁止了。 – Brad

+0

哦混合了兩個不同的API調用。這一個應該是電話。 關於403,你是否能夠使用其他一些clinet訪問存儲桶(可能是Firefox的UI或S3Explorer插件)與這些secretid/keys? –

+0

dang。第一次我仍然得到403。我試圖與「桶名」連接,然後我將路徑傳遞給我試圖訪問的文件,即:「/some/path/file.json」。那是對的嗎?我已經嘗試過,沒有主導斜線。至於403,是的,是 – Brad