2012-11-19 46 views
4

我與目前此代碼的工作:兩個亞馬遜S3的Python的Boto上傳問題

#!/usr/bin/env python 

import boto 
import boto.s3 
from boto.s3.key import Key 

AWS_ACCESS_KEY_ID = '' 
AWS_SECRET_ACCESS_KEY = '' 

filename = 'test.zip'  
bucket_name = AWS_ACCESS_KEY_ID.lower() + '-mah-bucket' 
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 

bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT) 

k = Key(bucket) 
k.key = 'my test file' 
k.set_contents_from_filename(filename) 

我有兩個問題。首先,我相信這段代碼可以創建一個存儲桶並進行上傳。事情是我不想創建一個桶,因爲我已經有一個。爲了做到這一點我只是把它改成這樣:

k = Key(bucket_name) 

,擺脫這樣的:

bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT) 

回答

4

事實上,而不是conn.create_bucket(...),只是做:

bucket = conn.get_bucket(bucket_name) 
k = Key(bucket) 

此外,我也許應該指出,基於AWS_ACCESS_KEY_ID命名您的存儲桶似乎很愚蠢,因爲這不是真的需要。

+0

謝謝您的反饋。我已採納您的建議來創建此:https://gist.github.com/4114960。這是你的意圖嗎? – Jimmy

+1

由於存儲區名稱空間是全局的,因此將您的存取密鑰用作存儲區名稱的一部分確實有助於確保該名稱是唯一的,因此這不是一個可怕的想法,但它確實會造成醜陋的存儲區名稱。 – garnaat

+1

@ user1738522是的,這基本上看起來是正確的(當然除了空白的訪問密鑰和祕密)。 – Hexar