返回启动配置列表的python脚本如下(对于us-east-1区域):
autoscaling_connection = boto.ec2.autoscale.connect_to_region(region)
nlist = autoscaling_connection.get_all_launch_configurations()
由于某种原因,nlist的长度为50,即我们发现只有50个启动配置。 AWS CLI中的相同查询会产生174个结果:
aws autoscaling describe-launch-configurations --region us-east-1 | grep LaunchConfigurationName | wc
为什么偏差这么大?
答案 0 :(得分:2)
因为get_all_launch_configurations
的默认限制是每个调用返回50条记录。 boto2
的功能似乎没有特别的文档,但是describe_launch_configurations
中的类似功能boto3
提到:
参数
MaxRecords (整数)-与此一起返回的最大项目数 呼叫。默认值为50,最大值为100。
NextToken (字符串)-下一组项目的令牌 返回。 (您从上一个呼叫中收到了此令牌。)
boto2
的{{1}}在名称get_all_launch_configurations()
和max_records
下支持相同的参数,请参见here。
首先使用next_token
进行通话,您将获得前50个(或最多100个)启动配置。在返回的数据中查找NextToken=""
的值,并继续重复调用,直到返回的数据不包含NextToken
为止。
类似这样的东西:
NextToken
希望有帮助:)
顺便说一句,如果您要编写新脚本,请考虑使用 boto3 编写它,因为这是当前和推荐的版本。
更新-boto2与boto3:
看起来 boto2 在返回值列表中未返回data = conn.get_all_launch_configurations()
process_lc(data['LaunchConfigurations'])
while 'NextToken' in data:
data = conn.get_all_launch_configurations(next_token=data['NextToken'])
process_lc(data['LaunchConfigurations'])
。使用 boto3 ,确实更好,更合理:)
这是一个有效的实际脚本:
NextToken
我故意设置#!/usr/bin/env python3
import boto3
def process_lcs(launch_configs):
for lc in launch_configs:
print(lc['LaunchConfigurationARN'])
client = boto3.client('autoscaling')
response = client.describe_launch_configurations(MaxRecords=1)
process_lcs(response['LaunchConfigurations'])
while 'NextToken' in response:
response = client.describe_launch_configurations(MaxRecords=1, NextToken=response['NextToken'])
process_lcs(response['LaunchConfigurations'])
进行测试,并在实际脚本中将其提高到50或100。