2010-08-03 51 views
5

我有一個連接工作,因爲我可以列出桶,但嘗試添加對象時有問題。python s3使用boto,說'屬性錯誤:'str'對象沒有屬性'連接'

conn = S3Connection(awskey, awssecret) 

key = Key(mybucket) 

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

我得到錯誤:

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

誤差文件中:

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

回答

5

Key期望的剷鬥對象作爲其第一個參數(可能由conn.create_bucket()創建)。

看起來像mybucket不是一個桶,而是一個字符串,所以調用失敗。

+0

謝謝,就是這樣。 btw k.set_acl('public-read')不起作用,我錯過了什麼? – Blankman 2010-08-03 01:17:41

+0

@blank:不知道有關'set_acl' – sth 2010-08-03 01:21:40

13

只需更換:

key = Key(mybucket) 

有:

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

擴大對某事的評論,你不能傳遞一個字符串,它需要一個水桶對象。

6

這是我會怎麼做:

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') 

米奇

0

進口boto3

S3 = boto3.resource( 'S3')

mybucket = s3.Bucket(」 mybucketName')

現在您將獲得s3存儲桶對象。你得到的字符串。

享受!

相關問題