boto.ec2.connection.EC2Connection.request_spot_instances() 不 return boto.ec2.spotinstancerequest.SpotInstanceRequest

boto.ec2.connection.EC2Connection.request_spot_instances() does not return boto.ec2.spotinstancerequest.SpotInstanceRequest

标题说的就是问题。

我正在像这样请求一个带有 boto 的 spot 实例(aws 密钥和密钥是在 ~/.boto 中设置的环境变量):

import boto
conn = boto.connect_ec2()
type(conn)
> boto.ec2.connection.EC2Connection

response = conn.request_spot_instances(**params)
type(response)
> boto.resultset.ResultSet

params 具有价格、image_id、instance_type 和展示位置的值。

这是图书馆偏离其文档的地方。正如您在 boto docs 中看到的,request_spot_instances() 应该是 return boto.ec2.spotinstancerequest.SpotInstanceRequest,但它 return 是 boto.resultset.ResultSet

没有方法可以获取 boto.resultset.ResultSet 的请求 ID,这正是我真正想要的。我不想解析 return 从打印 response 编辑的值,但我在文档中找不到获取它的好方法。

print(response)
> [SpotInstanceRequest:sir-xxxxxxx]

好了,这不再是问题了

In [120]: type(response[0])
Out[120]: boto.ec2.spotinstancerequest.SpotInstanceRequest

您只需引用列表的第一个对象。不过,我觉得应该更新文档以反映函数 returns 包含 SpotInstanceRequest

的列表