使用 python-boto 启动 Openstack 实例

2024-01-10

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

但我收到以下错误,

EC2ResponseError: EC2ResponseError: 400 Bad Request <?xml version="1.0"?> <Response><Errors><Error><Code>NetworkAmbiguous</Code><Message>Multiple possible networks found, use a Network ID to be more specific.</Message></Error></Errors><RequestID>req-28b5a4e8-3838-4111-95db-337c5048716d</RequestID></Response>

我的代码就像这里,

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_instances 没有网络 ID 的关键字参数。

我在哪里犯了错误或者如何解决?或者是 python-boto 中的错误?

提前致谢。


我相信这不是 boto 的错误,boto 是为了与 AWS-API 通信而构建的。虽然大多数 EC2-AWS 功能可以与 EC2-OpenStack API 很好地配合使用,但某些功能尚未实现,并且会以 HTTP 错误 500 或 400 进行响应。

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

在我的尝试中,两者都没有private_ip_address nor subnet_id用于指定网络/子网run_instances()如果 OpenStack 中有多个。

编辑:如果您只有一个网络/子网,则以下代码可以与 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")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python-boto 启动 Openstack 实例 的相关文章

随机推荐