Python 将beeswithmachineguns与.pem一起使用时出现boto异常

Python 将beeswithmachineguns与.pem一起使用时出现boto异常,python,amazon-ec2,boto,Python,Amazon Ec2,Boto,所以我试着用蜜蜂和机关枪来测试我自己的网站 01:01:11 Peters-MacBook-Pro:.ssh peterconerly$ bees up -k amazonkeypair -s 1 -g public -l ec2-user Connecting to the hive. Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/bin/bees", l

所以我试着用蜜蜂和机关枪来测试我自己的网站

01:01:11 Peters-MacBook-Pro:.ssh peterconerly$ bees up -k amazonkeypair -s 1 -g public -l ec2-user
Connecting to the hive.
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/bin/bees", line 5, in <module>
    main.main()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beeswithmachineguns/main.py", line 127, in main
    parse_options()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beeswithmachineguns/main.py", line 111, in parse_options
    bees.up(options.servers, options.group, options.zone, options.instance, options.login, options.key)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beeswithmachineguns/bees.py", line 93, in up
    ec2_connection = boto.connect_ec2()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/__init__.py", line 135, in connect_ec2
    return EC2Connection(aws_access_key_id, aws_secret_access_key, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/connection.py", line 87, in __init__
    https_connection_factory, path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 638, in __init__
    debug, https_connection_factory, path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 281, in __init__
    host, config, self.provider, self._required_auth_capability())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/auth.py", line 308, in get_auth_handler
    'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['QuerySignatureV2AuthHandler'] Check your credentials
01:01:11 Peters MacBook Pro:.ssh peterconerly$bees up-k amazonkeypair-s1-g public-l ec2用户
连接到蜂箱。
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/2.7/bin/bees”,第5行,在
main.main()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/beeswithmachineeguns/main.py”,main中第127行
解析_选项()
parse_options中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/beeswithmachineeguns/main.py”,第111行
bees.up(options.servers、options.group、options.zone、options.instance、options.login、options.key)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/beeswithmachineeguns/bees.py”,第93行,向上
ec2_connection=boto.connect_ec2()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/_init__.py”,第135行,在connect_ec2中
返回EC2连接(aws\u访问\u密钥\u id,aws\u机密\u访问\u密钥,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/ec2/connection.py”,第87行,在__
https\u连接\u工厂,路径)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/connection.py”,第638行,在__
调试,https\u连接\u工厂,路径)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/connection.py”,第281行,在__
主机,配置,self.provider,self.\u必需\u身份验证功能()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/auth.py”,第308行,在get\u auth\u处理程序中
'检查您的凭据“%”(len(名称),str(名称)))
boto.exception.NoAuthHandlerFound:没有处理程序准备好进行身份验证。检查了1个处理器。['QuerySignatureV2AuthHandler']检查您的凭据
我直接用boto试过,根据 :

导入boto.ec2 >>>conn=boto.ec2.将_连接到_地区(“eu-west-1”) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/_init_____;.py”,第53行,位于connect_-to_u区域 对于区域中的区域(**kw_参数): 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/_-init___;.py”,第38行,区域中 c=EC2连接(**kw_参数) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/ec2/connection.py”,第87行,在__ https\u连接\u工厂,路径) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/connection.py”,第638行,在__ 调试,https\u连接\u工厂,路径) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/connection.py”,第281行,在__ 主机,配置,self.provider,self.\u必需\u身份验证功能() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/boto/auth.py”,第308行,在get\u auth\u处理程序中 '检查您的凭据“%”(len(名称),str(名称))) boto.exception.NoAuthHandlerFound:没有处理程序准备好进行身份验证。检查了1个处理器。['QuerySignatureV2AuthHandler']检查您的凭据 >>>
如错误消息所示,boto无法找到任何可使用的凭据。它的外观如下所示:

  • 调用connect\u to\u region时,可以将它们显式地作为
    aws\u access\u key\u id
    aws\u secret\u access\u key
    传递
  • 您可以设置环境变量
    AWS\u ACCESS\u KEY\u ID
    AWS\u SECRET\u ACCESS\u KEY
  • 您可以创建一个boto配置文件(有关详细信息,请参阅),并将该文件放置在
    /etc/config
    ~/.boto
    中,也可以将其放置在任何需要的位置,并将环境变量
    boto\u config
    设置为指向该文件
  • 如果您使用的是boto,则会在EC2服务器上的实例元数据中找到凭据

可怜的婴儿睡眠不足。我在谷歌上搜索的所有答案都是关于AWS密钥的,而不是将boto与pem文件一起使用。在我提供证书之前,它立即失败了——如果你看一下python解释器的话。谢谢garnaat——但我正在尝试将boto与.pem文件结合使用,而不是与accesskeyid/secretaccesskey组合使用。此外,在python解释器中,boto在需要凭据之前在步骤上失败。@平民-关于后者:正如错误消息所示,调用
boto.ec2.connect\u to\u region()
已经需要凭据(正如人们所期望的那样);您如何判断它在需要凭据之前在步骤中失败(事实上,除了innocent
import boto.ec2
语句外,没有其他语句)?@civilion-关于前者:使用AWS命令行工具和旧证书/密钥身份验证方案已被弃用,并将在某个时候被删除;请考虑切换到同时泛泛的<代码>访问密钥ID>代码> />代码>秘密访问密钥方法-您的生命将变得更容易(并且与使用结合起来更安全)。Boto不支持SOAP,因此,不支持通过证书文件进行身份验证。您必须将access_key/secret_key与boto结合使用。另外,将_连接到_region,因为EC2连接对象确实需要凭据,因为它调用DescribeRegions请求以获取EC2服务当前支持的区域列表。
>>> import boto.ec2
>>> conn = boto.ec2.connect_to_region('eu-west-1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/__init__.py", line 53, in connect_to_region
    for region in regions(**kw_params):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/__init__.py", line 38, in regions
    c = EC2Connection(**kw_params)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/connection.py", line 87, in __init__
    https_connection_factory, path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 638, in __init__
    debug, https_connection_factory, path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 281, in __init__
    host, config, self.provider, self._required_auth_capability())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/auth.py", line 308, in get_auth_handler
    'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['QuerySignatureV2AuthHandler'] Check your credentials
>>>