Я работаю над лямбда-кодом AWS, в котором я хочу получить все экземпляры с определенным значением, отсортировать их в обратном порядке, чтобы удалить самый старый экземпляр, и передать команды оставшимся экземплярам.
Вот 2 проблемы, с которыми я сталкиваюсь: 1) Как только я удаляю print "Tag value is %s"%(tag['Value'])
из части кода, я получаю нулевой ответ для отлично работающего кода в противном случае.
2) Поскольку я добавляю экземпляры в список, я не могу отсортировать их с помощью атрибута LaunchTime, есть ли альтернативный способ?
Код:
def lambda_handler(event, context):
reservations = boto3.client('ec2').describe_instances()['Reservations']
instances_list = []
process_instance_list = []
command = 'crontab -r'
ssm = boto3.client('ssm')
for res in reservations:
instances = res['Instances']
for inst in res['Instances']:
for tag in inst['Tags']:
print("Tag value is {}".format(tag['Value']))
//Below if loop doesn't work if above printout is removed.
if tag['Value']=='Ubuntu_Magento':
print("{} {} {}".format(tag['Value'], inst['InstanceId'], inst['LaunchTime']))
instances_list.append(inst)
// Below line gives syntax error, even though I have used LaunchTime param above
instances_list.sort(key=lambda x: x['LaunchTime'] reverse=False)
non_processed_id=instances_list[0]['InstanceId']
for val in instances_list:
if val['InstanceId'] != non_processed_id['InstanceId']:
ssmresponse = ssm.send_command(InstanceIds=[val['InstanceId']], DocumentName='AWS-RunShellScript', Parameters= { 'commands': [command]})