Windows上的Python Boto凭证错误
我这几小时一直在尝试通过Python在Boto上登录,但始终解决不了这个问题。Python总是返回一个错误:
No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler']
Check your Credentials
根据日志记录:
boto.set_stream_logger('boto')
问题是:“[DEBUG]: 从元数据服务器获取凭证。”这意味着我的凭证文件找不到。虽然我不太确定该把“mycreds.boto”这个文件放在哪里,但我已经把它复制到了我网站包中的boto目录的几个位置。我搜索了很久,但还是不知道该把这个文件放在哪里。考虑到:
s3 = boto.connect_s3()
如果我的“mycreds.boto”文件不在“正确”的位置,我也不知道该如何指定它的路径。因为移动文件没有效果,我创建了一个环境变量“BOTO_CONFIG”,它的值是一个“boto.config”文件的路径,这个文件存储了和“mycreds.boto”相同的凭证。不幸的是,这也没有解决任何问题。最后,我尝试使用以下代码登录:
s3 = boto.connect_s3(<aws access>, <aws secret key>)
这从日志中返回了:“[DEBUG]: 使用客户端提供的访问密钥。”和“[DEBUG]: 使用客户端提供的秘密密钥。”没有返回其他错误,但当我尝试在线访问我的存储桶时却无法连接。我已经多次重启命令窗口和电脑,但不知道还可以尝试什么。我基本上已经没有其他想法了,所以任何帮助都将不胜感激。我使用的是Windows 7和Python 2.7.7。
1 个回答
默认情况下,boto会在 /etc/boto.cfg
和 ~/.boto
这两个地方寻找凭证。它会使用 os.path.expanduser
来尝试将 ~/.boto
转换成你系统上的正确路径。在Windows系统上,这个过程依赖于环境变量 HOME
和 USERPROFILE
。如果这两个变量在你的环境中都没有设置,boto可能就找不到配置文件了。
你有几种选择。你可以确保在你的环境中设置 HOME
变量,指向存放 .boto
文件的目录。或者,你可以设置环境变量 BOTO_CONFIG
,直接指向你的配置文件,无论它在文件系统的哪个位置。如果选择这个方法,记得将它设置为你boto配置文件的完整路径。
我不太确定为什么直接提供凭证对你不起作用。你能提供更多关于失败的情况吗?有没有出现错误信息?如果有的话,是什么?