2010-08-03 58 views
5

Tôi có kết nối hoạt động như tôi có thể liệt kê nhóm, nhưng gặp sự cố khi cố thêm đối tượng.python s3 sử dụng boto, nói 'thuộc tính lỗi:' str 'đối tượng không có thuộc tính' kết nối '

conn = S3Connection(awskey, awssecret) 

key = Key(mybucket) 

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

tôi nhận được lỗi:

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

lỗi là trong file:

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

Trả lời

5

Key hy vọng một đối tượng xô như tham số đầu tiên của nó (có thể được tạo ra bởi conn.create_bucket()).

Có vẻ như mybucket không phải là một nhóm, mà là một chuỗi, do đó cuộc gọi không thành công.

+0

cảm ơn, chính là nó. btw k.set_acl ('public-read') không hoạt động, tôi có thiếu cái gì không? – Blankman

+0

@blank: Không có ý tưởng về 'set_acl' – sth

13

Chỉ cần thay thế:

key = Key(mybucket) 

với:

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

Mở rộng trên bình luận sth, bạn không thể vượt qua một chuỗi, nó cần phải được một đối tượng xô.

6

Đây là cách tôi sẽ làm điều này:

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

nhập khẩu boto3

s3 = boto3.resource ('s3')

mybucket = s3.Bucket (' mybucketName ')

Bây giờ bạn sẽ nhận được đối tượng xô s3. Bạn đã nhận được chuỗi.

Tận hưởng!

Các vấn đề liên quan