2012-12-13 64 views
7

Tôi đang cố gắng truy cập AWS bằng Boto và nó không hoạt động. Tôi đã cài đặt Boto, và boto.cfg trong/etc. Dưới đây là mã của tôi:Sử dụng Boto để kết nối với S3 bằng Python

import requests, json 
import datetime 
import hashlib 
import boto 

conn = boto.connect_s3() 

Dưới đây là các lỗi:

Traceback (most recent call last): 
    File "boto.py", line 4, in <module> 
    import boto 
    File "/home/mydir/public_html/boto.py", line 6, in <module> 
    conn = boto.connect_s3() 
AttributeError: 'module' object has no attribute 'connect_s3' 

Cái quái gì? Điều này không phức tạp.

+0

Không chắc chắn nếu lỗi của tôi có liên quan, nhưng tôi nhận được boto/utils.py ", line 171, in merge_meta nếu k.lower() trong boto.s3.key.Key.base_user_settable_fields: AttributeError: đối tượng 'module' không có thuộc tính 'key' – radtek

Trả lời

0

Bạn có thể cần phải làm điều gì đó tương tự như cách tôi đã phải sử dụng các lớp EC2Connection trong một số mã của tôi, trông như thế này:

from boto.ec2.connection import EC2Connection 
conn = EC2Connection(...) 

Ngoài ra, từ tài liệu của họ (http://boto.s3.amazonaws.com/s3_tut.html):

>>> from boto.s3.connection import S3Connection 
>>> conn = S3Connection('<aws access key>', '<aws secret key>') 

EDIT: Tôi biết rằng trang tài liệu có chức năng phím tắt mà bạn đang cố gắng sử dụng, nhưng tôi thấy một vấn đề tương tự khi cố gắng thực hiện cùng một loại phím tắt với EC2.

17

Có vẻ như tệp bạn đang làm việc được gọi là boto.py. Tôi nghĩ rằng những gì đang xảy ra ở đây là tệp của bạn đang tự nhập - Python tìm kiếm các mô-đun trong thư mục chứa tệp đang nhập trước khi nó xuất hiện trên PYTHONPATH của bạn. Hãy thử đổi tên thành cái gì khác.

+0

Điều đó hoàn toàn có tác dụng Cám ơn! –

+1

@RandallPinkston đánh dấu phần này là được chấp nhận – igaurav

+3

Lưu ý rằng bạn cũng sẽ cần xóa 'boto.pyc' đã tạo nếu nó đã được tạo. – jveldridge

0

Sử dụng các lớp Kết nối.

ví dụ:

from boto.s3.connection import S3Connection 
from boto.sns.connection import SNSConnection 
from boto.ses.connection import SESConnection 

def connect_s3(self): 
    return S3Connection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) 

def connect_sns(self): 
    return SNSConnection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) 

def connect_ses(self): 
    return SESConnection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) 
2

@ valdogg21

Tôi theo hướng dẫn của bạn và đặt này vào mã của tôi:

from boto.s3.connection import S3Connection 
conn = S3Connection('<aws access key>', '<aws secret key>') 

Nhưng bất chấp những ý định tốt của tôi, nó kết quả trong một lỗi nhỏ. Tôi vừa làm

sudo pip install boto --upgrade để đảm bảo tôi đã cài đặt phiên bản mới nhất.

Đây là thông báo lỗi. Chỉ cần tự hỏi nếu tôi là một con sói đơn độc hoặc nếu những người khác gặp phải vấn đề này ...

from boto.s3.connection import S3Connection ImportError: cannot import name S3Connection

0

Tôi đã thử tất cả các giải pháp của bạn, nhưng không có giải pháp nào có hiệu quả. Tôi tiếp tục đi qua StackOverFlow như tôi không thể nhìn thấy bất cứ ai khác không có vấn đề này khá nhỏ. Loại thực tế kỳ lạ là trong máy chủ nó hoạt động như một sự quyến rũ. Vấn đề là trên máy Mac của tôi

0

Tôi gặp sự cố này và đang gặp phải lỗi tương tự khi sử dụng boto3 và moto để mô phỏng xô s3.

boto3.connect_s3() 

Tôi đã chuyển lại thư viện của mình thành boto và hoạt động tốt. Dường như boto3 đã di cư connect_s3() với các nguồn lực():

boto.connect_s3() //works 
boto3.resources('s3') //works 

tôi có thể giải quyết vấn đề tương tự cho AWS Lambda quá:

boto.connect_awslambda() //works 
boto3.client('lambda') //works 
Các vấn đề liên quan