我一直在寻找解决我问题的解决方案两天,但是我没有任何关于使用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>
有没有人知道如何进行?我假设可能存在连接问题,但我可以获得公共图像列表。我不知道如何进一步调试。
答案 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
希望有所帮助。