#amazon-web-services #aws-lambda #boto3 #python-3.8
#amazon-веб-сервисы #aws-лямбда #boto3 #python-3.8
Вопрос:
У меня есть 1 идентификатор экземпляра списка из s3, и я хочу проверить каждый идентификатор экземпляра из s3 с идентификатором экземпляра из служб EC2 на наличие проверки ec2. Не могли бы вы помочь мне посоветовать какое-нибудь решение ? Спасибо
def lambda_handler(event, context): #Get all ec2 information - The current list in AWS ins_inf = ec2_client.describe_instances() for reservation in ins_inf['Reservations']: for ins_cur in reservation['Instances']: #Get all instance ID from ec2 ins_cur_id = ins_cur["InstanceId"] #Get instance ID list from s3 for ins_f_s3 in line_stream(s3_objload.get()['Body']): #Remove /n ins_f_s3_re=ins_f_s3.strip() #Compare instance ID from s3 with current instance ID in aws if ins_cur_id == ins_f_s3_re: print (ins_f_s3_re ' found') else: print(ins_f_s3_re ' not found in aws ')
И это результат
i-0a959c122fd51581e not found in aws i-0a959c122fd51581f not found in aws i-0a959c122fd51581e found i-0a959c122fd51581f not found in aws
Возможно, вы можете увидеть «i-0a959c122fd51581e» , показывающее 2 сообщения при сравнении. Это не правильно. Может ли кто-нибудь помочь мне в этом деле ? Так много
Комментарии:
1. Вы печатаете
not found in aws
каждый раз, когда текущая строка из файла не совпадает. Вы хотите напечатать это только в том случае, если оно не найдено ни в одной из строк. Я бы также рекомендовал загрузить файл в память и не извлекать его повторно из S3 для каждого экземпляра в списке резервирования.2. Привет, Джорданм, Спасибо за твою идею. Теперь мой python уже хорошо работает. Спасибо
Ответ №1:
Предварительно прочитайте список интересующих вас экземпляров EC2 из S3 и сохраните их в списке. Затем просто проверьте каждый идентификатор экземпляра, возвращенный из вызова DescribeInstances, чтобы узнать, есть ли он в списке S3 (как и предлагает @jordanm в приведенном выше комментарии).
s3_list = [x.strip() for x in line_stream(s3_objload.get()['Body'])] ins_inf = ec2_client.describe_instances() for reservation in ins_inf['Reservations']: for ins_cur in reservation['Instances']: # Get instance ID from ec2 ins_cur_id = ins_cur["InstanceId"] if ins_cur_id in s3_list: print(ins_cur_id ' found') else: print(ins_cur_id ' not found')
Комментарии:
1. Привет, Джармод, спасибо за твой совет. Теперь я могу это сделать. Так много