无法使用boto在aws中使用python启动实例

时间:2014-11-22 23:31:34

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

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>')

当我运行时,这是否取代了值

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

它给出了一个错误陈述

&#39; NoneType&#39;对象没有属性&#39; run_instances&#39;

2 个答案:

答案 0 :(得分:0)

错误输出表明您的conn变量未设置。

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

  • 不正确的访问密钥和/或密钥
  • 没有从您的计算机连接到US-West-2端点

您的访问密钥应如下所示:AKIAJUWHFZOPPDM7B7XA

您的密钥应包含40个随机字符的字符串。

如果您从分配了角色的EC2实例使用boto,则无需传递凭据。它们将通过Instance Metadata Service根据分配的角色自动配置。

答案 1 :(得分: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与PV的AMI匹配
  • 请确保您的帐户有默认的VPC

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

  

boto.exception.EC2ResponseError:EC2ResponseError:400 Bad Request      InvalidParameterCombination非Windows   虚拟化类型为&#39; hvm&#39;目前不是   支持此实例   type.df213b43-e8e1-4cd5-9aa9-c4a9277588b8