7

我正在尝试使用 Boto 访问 AWS,但它不起作用。我已经安装了 Boto 和 /etc 中的 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'

我勒个去?这并不复杂。

4

6 回答 6

18

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

于 2012-12-13T21:43:16.767 回答
1

使用连接类。

例如

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)
于 2014-01-30T16:52:54.813 回答
1

@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

于 2015-01-21T02:05:44.543 回答
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>')

编辑:我知道文档页面具有您尝试使用的快捷方式功能,但是在尝试使用 EC2 执行相同类型的快捷方式时,我看到了类似的问题。

于 2012-12-13T21:39:14.377 回答
0

我已经尝试了您所有的解决方案,但似乎没有一个有效。我一直在查看 StackOverFlow,因为我看不到其他人没有这个相当小的问题。有点奇怪的事实是,在服务器中它就像一个魅力。问题出在我的 Mac 上

于 2015-01-21T02:31:11.557 回答
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
于 2016-05-18T19:56:36.247 回答