使用python boto启动Openstack实例

使用python boto启动Openstack实例,python,amazon-ec2,boto,openstack,Python,Amazon Ec2,Boto,Openstack,我尝试在opensatck设置上启动实例,并使用python boto配置多个网络 但我犯了以下错误 EC2ResponseError:EC2ResponseError:400错误请求 网络不明确找到多个可能的网络,使用网络ID更具体。req-28b5a4e8-3838-4111-95db-337c5048716d 我的代码是这样的 from boto import ec2 ostack = ec2.connection.EC2Connection( ec2_access_key, ec

我尝试在opensatck设置上启动实例,并使用python boto配置多个网络

但我犯了以下错误

EC2ResponseError:EC2ResponseError:400错误请求
网络不明确找到多个可能的网络,使用网络ID更具体。req-28b5a4e8-3838-4111-95db-337c5048716d

我的代码是这样的

from boto import ec2
ostack = ec2.connection.EC2Connection(
    ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova',
    path='/services/Cloud'
)

ostack.run_instances('ami-xxxxx', key_name='BotoTest')
对于配置为openstack的单个网络,上述方法工作正常

注意:run_实例没有network-id的关键字参数

我在哪里犯了错误,或者如何纠正?还是python boto中的bug

提前谢谢。

你试过了吗

from boto import ec2
ostack = ec2.connection.EC2Connection(
   ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova',
   path='/services/Cloud', debug=1
)
然后


亚马逊将其用于VPC网络?您正在运行VPC吗?

我相信这不是boto的错误,boto是为与AWS-API通信而构建的。虽然EC2-AWS的大部分功能都可以与EC2 OpenStack API配合使用,但有些功能没有实现,并且会出现HTTP错误500或400

AWS使用VPC(虚拟私有云)作为网络,使用可用性区域作为子网。两者都有一个默认设置,如果在创建新实例时没有进一步的规范,则采用该设置。但在OpenStack中,我看不到将网络和子网标记为默认的可能性

在我的尝试中,如果OpenStack中有多个网络/子网,则无论是
private\u ip\u address
还是
subnet\u id
都无法在
run\u instances()
处指定网络/子网

编辑:如果您只有一个网络/子网,则以下代码适用于trystack.org上的boto:

import boto
conn = boto.connect_ec2_endpoint("http://8.21.28.222:8773/services/Cloud",aws_access_key_id='...',aws_secret_access_key='...')
new_instance = conn.run_instances("ami-00000020", key_name="trystack", security_groups=["default"], instance_type="m1.small")

是的,你是对的。但我试图推翻它。更新此问题很快就会出现:-)你能检查一下吗?我发现OpenStack EC2 API没有过滤vpc/子网/网络ID,它应该只为启用。与
right\u aws
ruby library
EC2相同的问题。启动\u实例
。。。正如您所说,这是一个api问题,请不要使用最新版本的openstack进行检查。我检查完后会通知你的。
import boto
conn = boto.connect_ec2_endpoint("http://8.21.28.222:8773/services/Cloud",aws_access_key_id='...',aws_secret_access_key='...')
new_instance = conn.run_instances("ami-00000020", key_name="trystack", security_groups=["default"], instance_type="m1.small")