Windows上的Python Boto凭证错误

3 投票
1 回答
2853 浏览
提问于 2025-04-18 10:55

我这几小时一直在尝试通过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 个回答

2

默认情况下,boto会在 /etc/boto.cfg~/.boto 这两个地方寻找凭证。它会使用 os.path.expanduser 来尝试将 ~/.boto 转换成你系统上的正确路径。在Windows系统上,这个过程依赖于环境变量 HOMEUSERPROFILE。如果这两个变量在你的环境中都没有设置,boto可能就找不到配置文件了。

你有几种选择。你可以确保在你的环境中设置 HOME 变量,指向存放 .boto 文件的目录。或者,你可以设置环境变量 BOTO_CONFIG,直接指向你的配置文件,无论它在文件系统的哪个位置。如果选择这个方法,记得将它设置为你boto配置文件的完整路径。

我不太确定为什么直接提供凭证对你不起作用。你能提供更多关于失败的情况吗?有没有出现错误信息?如果有的话,是什么?

撰写回答