使用AWS S3时在Python中的凭据问题

时间:2016-11-16 10:40:23

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

我得到的错误:

ERROR:boto:Unable to read instance data, giving up
Traceback (most recent call last):

File "<ipython-input-62-476f799f9e0f>", line 2, in <module>
conn = boto.connect_s3()

File "/usr/local/lib/python2.7/dist-packages/boto/__init__.py", line 141, in connect_s3
return S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 191, in __init__
validate_certs=validate_certs, profile_name=profile_name)

File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 569, in __init__
host, config, self.provider, self._required_auth_capability())

File "/usr/local/lib/python2.7/dist-packages/boto/auth.py", line 993, in get_auth_handler
'Check your credentials' % (len(names), str(names)))
  

NoAuthHandlerFound:没有处理程序准备好进行身份验证。检查了1名处理程序。 [&#39; HmacAuthV1Handler&#39;]检查您的凭据

此错误消息在与aws S3Connection建立连接时即将发生。

我想与AWS S3建立连接并读取CSV文件。 请帮帮我 我正在使用Python 2.7.12

现在我正在使用以下代码:

import boto
import time

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


from boto.s3.connection import Location
print '\n'.join(i for i in dir(Location) if i[0].isupper())

conn.create_bucket('egp-shared-prod/egp-prod-c2c1/',
    location=Location.DEFAULT)

并且,它显示错误:

 File "<ipython-input-69-4b49d719d4ca>", line 15, in <module>
conn.create_bucket('egp-shared-prod/egp-prod-c2c1/', location=Location.DEFAULT)

 File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 616, in create_bucket
data=data)

 File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 668, in make_request
retry_handler=retry_handler

 File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1071, in make_request
retry_handler=retry_handler)

 File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1030, in _mexe
raise ex

gaierror: [Errno -2] Name or service not known

2 个答案:

答案 0 :(得分:0)

我尝试了您的代码,我的测试发现该错误与egp-shared-prod/egp-prod-c2c1/存储桶名称有关。

Bucket Restrictions and Limitations文档说:

  

存储桶名称可以包含小写字母,数字和连字符。

不允许使用斜杠。此外,他们似乎正在扰乱boto代码。

答案 1 :(得分:0)

您正在使用的Boto(官方AWS Python绑定)希望您将AWS_ACCESS_KEY_id和AWS_SECRET_ACCESS_KEY保存在环境变量中,如下所示:

export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'