2010-08-03 15 views
5

Ho una connessione che funziona come posso elencare i bucket, ma avendo problemi quando provo ad aggiungere un oggetto.python s3 usando boto, dice 'errore attributo:' str 'oggetto non ha attributo' connessione '

conn = S3Connection(awskey, awssecret) 

key = Key(mybucket) 

key.key = p.sku 
key.set_contents_from_filename(fullpathtofile) 

ottengo l'errore:

'attribute error: 'str' object has no attribute 'connection' 

l'errore è nel file:

/usr/local/lib/python2.6/dist-package/boto-2.obl-py2.6.egg/boto/s3/key.py' line # 539 

risposta

5

Key si aspetta un oggetto secchio come primo parametro (eventualmente creato da conn.create_bucket()).

Sembra che mybucket non sia un bucket, ma una stringa, quindi la chiamata non riesce.

+0

grazie, era così. btw k.set_acl ('public-read') non funziona, mi manca qualcosa? – Blankman

+0

@blank: non ho idea di 'set_acl' – sth

13

basta sostituire:

key = Key(mybucket) 

con:

mybucket = "foo" 
bucketobj = conn.get_bucket(mybucket) 
mykey = Key(bucketobj) 

Ampliando commento di sth, non è possibile passare una stringa, ha bisogno di essere un oggetto secchio.

6

Ecco come farei questo:

import boto 
s3 = boto.connect_s3() 
bucket = s3.get_bucket("mybucketname") 
key = bucket.new_key("mynewkeyname") 
key.set_contents_from_filename('path_to_local_file', policy='public-read') 

Mitch

0

importazione boto3

s3 = boto3.resource ('s3')

MyBucket = s3.Bucket (' mybucketName ')

Ora si otterrà l'oggetto bucket s3. Stavi prendendo la corda.

Divertiti!

Problemi correlati