Funciones de AWS Lambda con una IP estática
IP estática – Internamente, en Compare52 creamos una gran cantidad de microservicios sin servidor en AWS Lambda, lo cual es excelente para ejecutar servicios web sin estado en la nube que no necesitan que sus servidores web se ejecuten continuamente.
AWS Lambda proporciona un escalado fácil y alta disponibilidad para el código de su aplicación sin ningún esfuerzo ni responsabilidad por parte de usted que administre y aprovisione las instancias EC2.
Con Amazon EC2, usted es responsable de aprovisionar la capacidad, monitorear el estado y el rendimiento de la flota y diseñar para la tolerancia a fallas y la escalabilidad.
Con AWS Lambda, solo paga por lo que usa. Se le cobra en función del número de solicitudes de sus funciones y el tiempo de ejecución de su código. El nivel gratuito de Lambda incluye 1 millón de solicitudes gratuitas por mes y 400 000 GB-segundos de tiempo de cómputo por mes. Una obviedad…
El problema
Uno de nuestros terceros nos pidió que enviáramos los datos recibidos por un cliente a su API, que solo aceptaba solicitudes de direcciones IP incluidas en la lista blanca. AWS Lambda no es lo mismo que una instancia EC2, ya que se ejecuta en contenedores dentro de la infraestructura de AWS.
Parecería que el tráfico proviene de ciertas direcciones IP, pero no hay forma de configurar qué dirección IP se usa, lo que significa que la dirección IP desde la que se envían las solicitudes no será la misma.
La solución
AWS Lambda admite la ejecución de su código desde dentro de una VPC. Con esta capacidad, podemos crear una puerta de enlace NAT (traductor de direcciones de red) para que todas las conexiones salientes de nuestras funciones lambda salgan del NAT que está asignado a una dirección IP fija.
Esta dirección IP fija puede ser incluida en la lista blanca de nuestros terceros.
- Cree una nueva VPC para ejecutar su código (o use una VPC existente)
- Cree una nueva puerta de enlace de Internet para comunicarse con Internet desde dentro de su VPC
- Cree una subred pública y agregue una nueva ruta a la tabla de rutas que enruta a su Internet Gateway desde 0.0.0.0/0
- Cree una nueva dirección IP elástica.
- Cree una nueva puerta de enlace NAT y asígnela a la subred pública y la dirección IP elástica que acaba de crear.
- Cree una subred privada y agregue una nueva ruta a la tabla de rutas que enruta a su puerta de enlace NAT desde 0.0.0.0/0
Luego se puede crear una función lambda dentro de su VPC para realizar una solicitud a Internet. Una prueba simple puede ser usar el módulo de solicitud (en Node.js) para realizar una solicitud a www.google.com. Si la solicitud es exitosa, entonces sabemos que la solicitud se NAT con éxito.
La dirección IP elástica que creamos anteriormente se puede agregar a las listas blancas de IP de cualquier organización externa.
Si este artículo sobre IP estática le ha sido útil, ¡asegúrate de dejar su like!