2014-11-22 53 views
1
import boto.ec2 
conn = boto.ec2.connect_to_region("us-west-2", 
... aws_access_key_id='<aws access key>', 
... aws_secret_access_key='<aws secret key>') 

这是否值替换,当我运行无法使用AWS使用Python博托

conn.run_instances('<ami-image-id>') 

它给出了一个错误,说明

“NoneType”对象没有属性“run_instances”启动实例

+0

您的AWS账户是新的吗?我相信新账户不能再使用EC2 Classic,而必须推出VPC。因此,您需要将''subnet_id = ''添加到您的run_instances调用中。 – sysconfig 2014-11-23 00:36:52

+0

您的'conn'对象为None,它无法连接到该区域 - 可能是因为凭据无效。连接后,尝试打印conn,如下所示: '>>> conn = boto.ec2.connect_to_region('us-west-1',aws_access_key_id ='...',aws_secret_access_key ='..') > >> conn EC2Connection:ec2.us-west-1.amazonaws.com ' – helloV 2014-11-23 01:15:31

+0

尝试连接到地区它没有工作sumhow他们是与终端的问题我重申了系统,它的工作!感谢您的输入 – user4283094 2014-11-24 18:01:49

回答

0

错误输出表明您的conn变量没有被设置。

尝试直接运行您的connect_to_region()命令并查看返回的错误消息。一些可能的解释:

  • 不正确的访问密钥和/或秘密密钥
  • 从计算机到美西2端点

访问密钥应该看起来像无连接: AKIAJUWHFZOPPDM7B7XA

您的密钥应由40个随机字符组成。

如果您使用的指定角色的EC2实例使用boto,则不需要传递凭证。它们将根据分配的角色通过实例元数据服务自动进行配置。

+0

尝试连接到它没有工作的地区总结他们是与终端的问题我重申了系统,它的工作!感谢您的输入 – user4283094 2014-11-24 18:01:06

0

我刚刚在我的笔记本电脑上(使用访问密钥,配置在我的〜/ .aws/config文件中的密钥)尝试了这一点,它按预期工作。

$ /usr/bin/python2.7 
Python 2.7.6 (default, Sep 9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import boto.ec2 
>>> conn = boto.ec2.connect_to_region("us-west-2") 
>>> conn.run_instances('ami-55a7ea65') 
Reservation:r-a76255ac 

有几件事情要检查:

  • 确保您的访问密钥和秘密密钥是正确的
  • 确保您的AMI ID相匹配的AMI光伏
  • 要确保你有一个默认VPC为您的帐户

虽然在所有这些情况下,错误消息应该更加明确,如:

boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request InvalidParameterCombination Non-Windows instances with a virtualization type of 'hvm' are currently not supported for this instance type.df213b43-e8e1-4cd5-9aa9-c4a9277588b8