2

两天来我一直在寻找解决问题的方法,但我没有任何迹象表明我在使用 boto 将私有 AMI 作为 EC2 实例运行时做错了什么。我还没有看到任何页面清楚地解释如何做到这一点,或者任何有我的问题的人。

为了更清楚地解释我的问题:

  • 我在 Web 界面上创建了一个自定义 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>

有人对如何进行有任何想法吗?我认为可能存在连接问题,但我可以获得公共图像列表。我不知道如何进一步调试。

4

2 回答 2

1

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

于 2013-03-13T17:49:47.143 回答
0

您应该能够仅使用您的密钥和 ID 进行连接,因此无需指定区域:

from boto.ec2.connection import EC2Connection

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

给我:

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

希望有帮助。

于 2013-03-13T16:03:22.617 回答