使用Boto通过Python连接到S3

时间:2012-12-13 21:31:45

标签: python amazon-web-services amazon-s3 boto

我正在尝试使用Boto访问AWS,但它无法正常工作。我已经在/ etc中安装了Boto和boto.cfg。这是我的代码:

import requests, json
import datetime
import hashlib
import boto

conn = boto.connect_s3()

这是错误:

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'

到底是什么?这并不复杂。

6 个答案:

答案 0 :(得分:18)

您正在处理的文件看起来像boto.py。我认为这里发生的事情是你的文件是自己导入的 - 在查看PYTHONPATH之前,Python在包含执行导入的文件的目录中查找模块。尝试将名称更改为其他名称。

答案 1 :(得分:2)

@ valdogg21

我按照您的指示将其放入我的代码中:

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

但是尽管我有良好的意图,但它会导致一个小错误。我刚刚做了

sudo pip install boto --upgrade以确保我安装了最新版本。

这是错误消息。只是想知道我是独行狼还是其他人遇到这个问题......

  

来自boto.s3.connection导入S3Connection ImportError:无法导入   名称S3Connection

答案 2 :(得分:0)

您可能需要执行类似于我在某些代码中使用EC2Connection类的方法,如下所示:

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

另外,来自他们的文档(http://boto.s3.amazonaws.com/s3_tut.html):

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

编辑:我知道doc页面有你试图使用的快捷功能,但是当我尝试用EC2做同样类型的快捷方式时,我看到了类似的问题。

答案 3 :(得分:0)

使用Connection类。

e.g。

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)

答案 4 :(得分:0)

我已经尝试了所有解决方案,但它们似乎都没有效果。我继续浏览StackOverFlow,因为我看不到其他人没有这个相当小的问题。一种奇怪的事实是,它在服务器中的作用就像一个魅力。问题出在我的Mac上

答案 5 :(得分:0)

我遇到了这个问题,在使用boto3和moto模拟s3存储桶时遇到了同样的错误。

boto3.connect_s3()

我将我的库切换回boto,它工作正常。看起来boto3已将connect_s3()迁移到resources():

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

我也可以解决AWS Lambda的类似问题:

boto.connect_awslambda() //works
boto3.client('lambda')  //works