AWS Lambda, Python: получение экземпляров с запуском tme для сортировки синтаксической ошибки, ошибка сравнения тегов - PullRequest
0 голосов
/ 01 июля 2019

Я работаю над лямбда-кодом 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]}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...