Estou criando uma ferramenta para implantar imagens do Docker no EC2 via ElasticBeanstalk, para que a equipe de desenvolvimento possa demonstrar rapidamente seu trabalho sem ter que se unir. Não quero que o Elastic IP seja ativado para esses aplicativos, pois eles têm vida curta.
A razão pela qual estou perguntando isso é porque, se minha ferramenta criar mais de 5 aplicativos (e tiver sido rapidamente), qualquer novo aplicativo falhará porque nenhum IP Elastic pode ser atribuído ao novo aplicativo. Isso ocorre porque uma conta da AWS normalmente tem no máximo 5 IPs elásticos disponíveis . Posso acessar o console da web do aws e escolher 'Desassociar o endereço IP elástico' (veja abaixo) em uma instância, após o que a instância ec2 receberá um novo ip (após alguns minutos). É isso que eu quero, mas quero fazê-lo programaticamente e preferiria inicializar o aplicativo sem ele, em vez de fazê-lo após a criação da instância.
Existe uma opção de configuração que eu possa usar para desativar o IP elástico para a nova instância?
Estou usando o nó aws-sdk , mas qualquer dica em qualquer idioma serve.
Estou criando m1.small
instâncias únicas.
Se isso não for possível ao iniciar, terei que desassociar o IP Elastic da instância usando a função EC2.disassociateAddress .
Respostas:
Ao usar o tipo de ambiente "Instância única", você sempre obtém um EIP.
No guia do desenvolvedor do Beanstalk, Tipos de ambiente :
Desativar a opção "Associar endereço IP público" não tem nenhum efeito.
Alterne para o ambiente "Balanceamento de carga, escalonamento automático" para passar sem um EIP.
fonte
Se você estiver na sub-rede pública de uma VPC (o que é provável), é necessário um para que a instância possa se comunicar com a Internet. Por http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :
Os EIPs atribuídos automaticamente que acompanham uma nova instância não custam nada e desaparecem automaticamente quando a instância é desativada.
fonte
aws:ec2:vpc:AssociatePublicIpAddress
na sua configuração do EB (e isso são peculiares aos EBs de instância única). Como alternativa, peça à AWS um aumento no seu limite de EIP - na minha experiência, eles o concederão com prazer nesse tipo de situação.aws:ec2:vpc:AssociatePublicIpAddress
é apenas para a instância ec2, se você configurá-lo como false,disassociateAddress
a instância não terá um IP público.Existe uma opção de ambiente de pé de feijão elástico que pode ser o que você procura.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer
Espaço para nome: aws: ec2: vpc AssociatePublicIpAddress: false
Se você configurá-lo, todos os nós criados por esse ambiente não terão um IP público. O tráfego de entrada precisará usar um balanceador de carga. A VPC e as sub-redes precisarão ser associadas a um gateway NAT ou um gateway da Internet para obter acesso à Internet de saída. Se você não tiver acesso à Internet de saída, a construção do Elastic Beanstalk falhará (não poderá acessar os serviços da AWS).
fonte
{ "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },
mesmo assim, o Elastic IP está associado a essa instância. Qualquer pista?Depois de desassociar o endereço IP elástico, você tem cerca de 10 segundos para 'liberá-lo'. Se você liberá-lo, ele não voltará.
fonte