从boto运行私有AMI ec2实例

时间:2013-03-13 15:45:58

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

我一直在寻找解决我问题的解决方案两天,但是我没有任何关于使用boto将私有AMI作为EC2实例运行的错误提示。我没有看到任何明确说明如何做的页面,或任何有问题的人。

更清楚地解释我的问题:

  • 我在网络界面上创建了一个自定义AMI(安装了一些软件包,添加了一些文件)

  • 现在我想在我的计算机上使用Python脚本自动执行我在AMI上执行的任务(如果可能的话,运行此特定AMI的多个实例)

  • 我写了以下示例代码:

    import boto.ec2
    
    conn = boto.ec2.connect_to_region("eu-west-1",
      aws_access_key_id='myAKI',aws_secret_access_key='MySK')
    
    print (conn)
    
    reservation=conn.run_instances(image_id='ami-XXXXX',
      instance_type='m1.small',key_name='MyKey')
    

当我运行此代码时出现错误:

EC2Connection:ec2.eu-west-1.amazonaws.com
Traceback (most recent call last):
  File "./myfile.py", line 6, in <module>
    reservation=conn.run_instances(image_id='ami-  XXXX',instance_type='m1.small',key_name='MyKey')
  File "/Library/Python/2.7/site-packages/boto-2.8.0-py2.7.egg/boto/ec2/connection.py", line 722, in run_instances
verb='POST')
  File "/Library/Python/2.7/site-packages/boto-2.8.0-py2.7.egg/boto/connection.py", line   1062, in get_object
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>AuthFailure</Code><Message>Not authorized for images: [ami- XXXXXXX]</Message></Error></Errors><RequestID>6b653488-332d-4251-abb2-8e7e96e91891</RequestID>    </Response>

有没有人知道如何进行?我假设可能存在连接问题,但我可以获得公共图像列表。我不知道如何进一步调试。

2 个答案:

答案 0 :(得分:1)

我认为它试图告诉您,与您的EC2连接关联的帐户凭据无权访问AMI。也许它是用不同的帐户创建的?

答案 1 :(得分:0)

您应该只能连接您的密钥和ID,因此无需指定区域:

from boto.ec2.connection import EC2Connection

connection = EC2Connection(<S3_ACCESSKEYID>, <S3_SECRETACCESSKEY>)
print connection

给了我:

EC2Connection:ec2.us-east-1.amazonaws.com

希望有所帮助。