Tengo una función lambda que se ejecuta desde una VPC. Tenemos tres zonas de disponibilidad configuradas para HA. Me gustaría saber desde qué zona de disponibilidad se ejecuta cada invocación de Lambda.
Mi lamdba usa python 3.7 como tiempo de ejecución
probé esto
import socket hostname = socket.gethostname() IPAddr = socket.gethostbyname(hostname) print("Your Computer Name is:" + hostname) print("Your Computer IP Address is:" + IPAddr)Pero esto me da:
Your Computer Name is:169.254.128.117 Your Computer IP Address is:169.254.128.117que no es útil.
¿Cómo puedo saber qué IP privada está usando la función lambda?
Recuerde que cuando configura su Lambda para que funcione dentro de una VPC, en realidad está conectado a la VPC (de hecho, se ejecuta en una VPC administrada por AWS).
En su lugar, obtiene un ENI para cada Lambda a través del cual Lambda hablará por sus conexiones salientes, lo que le permite conectarse a sus recursos en la VPC.
En este momento, Lambda no puede acceder al valor para la zona de disponibilidad en la que se está ejecutando; aquí hay una lista de todas las variables de entorno disponibles a las que Lambda tiene acceso.
Si desea recuperar la IP de ENI de lo que estaba conectando a los recursos, necesitaría comunicarse de forma saliente a un recurso en su VPC y hacer que devuelva la dirección IP a la que se conectó.