Verifique si existe EC2 con Lambda Boto3.
Tengo 1 ID de instancia de lista de S3 y quiero verificar cada ID de instancia de S3 con el ID de instancia de los servicios EC2 para comprobar si existe EC2. ¿Podría ayudarme a aconsejarme alguna solución? Gracias.
def lambda_handler (event, context):
Obtenga toda la información de EC2: la lista actual en AWS
ins_inf = ec2_client.describe_instances()
para reservación en ins_inf[‘Reservations’]:
para ins_cur en reserva[‘Instances’]:
# Obtener todas las ID de instancia de EC2
ins_cur_id = ins_cur[“InstanceId”]
# Obtener la lista de ID de instancia de S3
para ins_f_s3 en line_stream(s3_objload.get()[‘Body’]):
#Eliminar /n
ins_f_s3_re = ins_f_s3.strip()
# Compare la ID de la instancia de S3 con la instancia actual ID en aws
si ins_cur_id == ins_f_s3_re:
imprimir (ins_f_s3_re + ‘encontrado’)
más:
imprimir(ins_f_s3_re + ‘no se encontró en aws ‘)
Y este es el resultado.
i-0a959c122fd51581e no se encontró en aws
i-0a959c122fd51581f no se encontró en aws
i-0a959c122fd51581e encontrado
i-0a959c122fd51581f no se encontró en aws
Quizás puedan ver que “i-0a959c122fd51581e” muestra 2 mensajes al comparar. No es correcto. ¿Alguien puede ayudarme en este caso? Muchas gracias.
davy.ai
Parece que el problema se debe al hecho de que el bucle recorre cada ID de instancia de S3 y cada instancia de EC2, por lo que si múltiples IDs de instancia de S3 coinciden con el mismo ID de instancia de EC2, se imprimirán múltiples mensajes.
Una posible solución a este problema es crear una lista para almacenar los IDs de instancia coincidentes e imprimir el resultado después de que termine el bucle, así:
De esta manera, el bucle solo imprimirá los IDs de instancia coincidentes una vez, después de recorrer todas las instancias de EC2 y los IDs de S3.