如何限制Amazon Boto中get_all_images的输出?
我尝试使用Python的boto库加载AWS的镜像列表。我的代码是这样的:
con = boto.connect_ec2(user, pasw)
images_list = con.get_all_images()
我怎么才能只获取函数 get_all_images()
的前10个结果呢?
我想要的类似于 con.get_all_images(maxresult=10)
这样的东西。
3 个回答
0
我想分享一下如何找到名字标签中包含特定字符串的图片,这个方法是基于storm_m2138的回答:
amis = EC2conn.get_all_images(
filters={
"tag-key":"Name",
"tag-value":"*some_string"
}
)
3
如果你只想获取你的图片,你需要指定一个叫做 owners 的参数。
另外值得注意的是,名称可以使用通配符,如果你想根据图片名称进行筛选的话:
images = ec2Connection.get_all_images(owners = ['self'], filters = {'name':'*image*'})
7
根据boto的文档,你不能直接限制这个函数返回的图片数量。这是因为它缺乏相应的API支持(见下面的链接),这并不是boto本身的问题。
过滤
不过,如果你想根据某些特定的属性来限制结果,可以传递一个filters
参数。
filters(字典)– 可选的过滤器,用于限制返回的结果。过滤器以字典的形式提供,字典的键是过滤器名称,值是过滤器的值。允许的过滤器名称和对应的值取决于你所执行的请求。具体细节请查看EC2 API指南。
例如
c.get_all_images(filters={'architecture': 'x86_64'})
支持的属性可以在AWS文档中找到。
限制
这个函数返回的是一个列表,所以如果你真的只想限制结果的数量,可以这样做:
images = con.get_all_images()[:10]
注意事项
请记住,API并不保证返回结果的特定顺序(至少文档中没有说明),所以你的前10张图片可能会随时间而变化。
如果你有太多图片,可能会占用内存,所以如果可以的话,我建议你根据一些属性进行过滤。