Solución:
Implemente su entorno beanstalk en VPC y, con la configuración correcta, una IP estática para el tráfico saliente es fácil.
En esta configuración, todas sus instancias retransmiten su tráfico saliente a través de una sola máquina, a la que puede asignar una dirección IP elástica. Todo el tráfico de origen interno y con destino a Internet de todas las instancias detrás de él aparecerá, desde la otra red, a Bw usando esa única IP elástica.
La parte de RDS de lo siguiente puede ser irrelevante para sus necesidades, pero los principios son todos iguales.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-rds.html
Esta publicación me ayudó a obtener una IP estática para las solicitudes salientes mediante el uso de una puerta de enlace NAT y el enrutamiento de solicitudes específicas a través de ella.
Necesitaba esta IP estática para estar en la lista blanca de un proveedor de API externo.
Encontré esta forma mucho más fácil que la proporcionada por AWS, sin la necesidad de crear una nueva VPC y subredes públicas y privadas.
Básicamente, lo que hice fue:
- Cree una nueva subred para alojar la puerta de enlace NAT.
- Cree la puerta de enlace NAT en la subred anterior y asigne una nueva IP elástica. Esta será nuestra IP saliente para acceder a API externas.
- Cree una tabla de enrutamiento para la subred NAT. Todo el tráfico saliente (
0.0.0.0/0
) debe enrutarse a través de la puerta de enlace NAT. Asigne la subred creada para usar la nueva tabla de rutas. - Modifique la tabla de ruta principal (la que maneja todas nuestras solicitudes de instancias EC2) y agregue la (s) IP (s) de la API externa, estableciendo su destino en la puerta de enlace NAT.
De esta manera podemos enrutar cualquier solicitud a las IP de API externas a través de la puerta de enlace NAT. Todas las demás solicitudes se enrutan a través de la puerta de enlace de Internet predeterminada.
Como dicen las publicaciones, esta no es una solución Multi AZ, por lo que si falla la AZ que contiene nuestra puerta de enlace NAT, podemos perder la conexión con la API externa.
Actualizar:
Vea el comentario de @TimObezuk para hacer de esta una solución Multi-AZ.