Estoy creando una herramienta para implementar imágenes de Docker en EC2 a través de ElasticBeanstalk, para que el equipo de desarrollo pueda demostrar rápidamente su trabajo sin tener que fusionarse. No quiero que Elastic IP esté habilitado para estas aplicaciones, ya que son de corta duración.
La razón por la que pregunto esto es porque si mi herramienta construye más de 5 aplicaciones (y lo ha hecho bastante rápido), cualquier aplicación nueva fallará porque no se puede asignar Elastic IP a la nueva aplicación. Esto se debe a que una cuenta de AWS generalmente tiene un máximo de 5 IP elásticas disponibles . Puedo ir a la consola web de aws y elegir 'Disassociate Elastic IP Address' (ver más abajo) en una instancia, después de lo cual la instancia de ec2 obtendrá una nueva ip (después de unos minutos). Esto es lo que quiero, pero quiero hacerlo mediante programación, y preferiría iniciar la aplicación sin ella en lugar de hacerlo una vez que se crea la instancia.
¿Hay alguna opción de configuración que pueda usar para deshabilitar Elastic IP para la nueva instancia?
Estoy usando el nodo aws-sdk , pero cualquier consejo en cualquier idioma servirá.
Estoy creando m1.small
instancias individuales.
Si esto no es posible al iniciar, tendré que disociar la Elastic IP de la instancia usando la función EC2.disassociateAddress .
Respuestas:
Cuando se usa el tipo de entorno "Instancia única", siempre se obtiene un EIP.
De la guía para desarrolladores de Beanstalk, Tipos de entorno :
Deshabilitar la opción "Asociar dirección IP pública" no tiene ningún efecto.
Cambie al entorno "Equilibrio de carga, autoescalado" para pasar sin un EIP.
fuente
Si se encuentra en la subred pública de una VPC (lo cual es probable), se necesita una para que esa instancia pueda comunicarse con Internet. Por http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :
Los EIP asignados automáticamente que vienen con una nueva instancia no cuestan nada, y desaparecen automáticamente cuando la instancia se da de baja.
fuente
aws:ec2:vpc:AssociatePublicIpAddress
en su configuración de EB (y que esto es peculiar de los EB de instancia única). Alternativamente, solicite a AWS un aumento en su límite de EIP; en mi experiencia, con gusto lo otorgarán en este tipo de situación.aws:ec2:vpc:AssociatePublicIpAddress
es solo para la instancia ec2, si lo configura en falso,disassociateAddress
la instancia no tendrá una IP pública.Hay una opción de entorno de beanstalk elástico que podría ser lo que buscas.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer
Espacio de nombres: aws: ec2: vpc AssociatePublicIpAddress: false
Si lo configura, todos los nodos creados por este entorno no tendrán una IP pública. El tráfico entrante tendrá que usar un equilibrador de carga. La VPC y las subredes deberán asociarse con una puerta de enlace NAT o una puerta de enlace de Internet para obtener acceso a Internet saliente. Si no tiene acceso a Internet saliente, la compilación Elastic Beanstalk fallará (no podrá acceder a los servicios de AWS).
fuente
{ "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },
aun así, Elastic IP se está asociando a esa instancia. ¿Cualquier pista?Después de desasociar la dirección IP elástica, tiene unos 10 segundos para 'liberarla'. Si lo sueltas, no volverá.
fuente