During my recent Ansible tests I created 'some' number of launch configuration, enough to reach account limit and I wanted/had to clean it. Boto sounded like a good candidate to do this. This few lines should address my problem.
import boto
import boto.ec2
import boto.ec2.autoscale
asg = boto.ec2.autoscale.connect_to_region('us-east-1')
results = asg.get_all_launch_configurations()
But it didn't. I could even found my launch configurations in the results sets. I figured out quickly that my results set is rather big and by default get_all_lunch_configurations method paging results (AFAIR default value is 20). Using example from this post on SDB I create following function doing what above method name promises - get all lunch configuration.
def get_all_launch_configuration(connection)
"""get_all_launch_configuration(connection) -
returns results set of all launch configuration,
regardless it size. Function require established
boto.ec2.autoscaling connection."""
results = connection.get_all_launch_configurations()
token = results.next_token
while True:
if token:
r = asg.get_all_launch_configurations(next_token=token)
token = r.next_token
results.extend(r)
else:
break
return results