I have a python script which prints out a list of ec2 instances as follows :
['i-06db4eb158ad0bdfd,2021-05-12 12:04:19+00:00,False', 'i-0f67cf99fb4536c3f,2020-10-14 13:32:23+00:00,asg-elk-', 'i-0539c8dfc839cbfda,2020-10-26 07:38:01+00:00,asg-standalone', 'i-0f285277529543462,2018-05-18 16:47:00+00:00,False', 'i-0d649cebdf54bd2f4,2020-03-12 10:07:07+00:00,asg-ddf', 'i-01734dfef0159c5c8,2020-10-20 13:05:27+00:00,asg-pro', 'i-0ff596f1dc01b61d8,2021-03-17 11:21:21+00:00,asg-base-test']
I want to be able to sort the list out based on CreationDateTime. I have used the python built-in function sorted() but that doesn’t seem to be giving me the output i need.
My python script is as follows :
response = ec2_client.describe_instances( MaxResults=10 ) instances = (len(response['Reservations'])) instances_list = [] for x in range(instances): # Get InstanceId instance_id = (response['Reservations'][x] ['Instances'][0]['InstanceId']) # Get NetworkInterfacws AttatchTime network_interface_id = ( response['Reservations'][x]['Instances'][0]['NetworkInterfaces'][0]['NetworkInterfaceId']) network_interface_details = ec2_client.describe_network_interfaces( NetworkInterfaceIds=[network_interface_id]) networkinterface_id_attachedtime = network_interface_details[ 'NetworkInterfaces'][0]['Attachment']['AttachTime'] # print results line = '{},{},{}'.format( instance_id, networkinterface_id_attachedtime, autoscaling_group_name) instances_list.append(line) sorted(instances_list)
Advertisement
Answer
sorted
takes key
argument which you can use to sort by date with a lambda
:
sorted(instances_list, key=lambda v: v.split(',')[1])