通过boto运行私有AMI的EC2实例
我已经找了两天的解决办法,但对于如何使用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
你只需要用你的密钥和ID就能连接,不用指定地区:
from boto.ec2.connection import EC2Connection
connection = EC2Connection(<S3_ACCESSKEYID>, <S3_SECRETACCESSKEY>)
print connection
这样会给我:
EC2Connection:ec2.us-east-1.amazonaws.com
希望这对你有帮助。
1
我觉得这句话是在告诉你,你用来连接EC2的账户信息没有权限访问这个AMI(亚马逊机器镜像)。可能这个AMI是用另一个账户创建的吧?