Iniciar instâncias via Elastic Beanstalk sem o Elastic IP configurado


10

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.

desassociar opção de menu

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.smallinstâ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 .


Se você estiver iniciando em uma sub-rede privada: stackoverflow.com/questions/39086022/…
lonewarrior556

Respostas:


10

Ao usar o tipo de ambiente "Instância única", você sempre obtém um EIP.

No guia do desenvolvedor do Beanstalk, Tipos de ambiente :

Um ambiente de instância única contém uma instância do Amazon EC2 com um endereço IP Elastic.

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.


Diferentemente das outras respostas aqui, isso realmente resolveu meu problema, então, obrigado :) Para futuros viajantes, na nova caixa de diálogo Criação de ambiente, escolha a opção "Load Balancing" no botão "Configure More Options" no final da criação do ambiente Formato.
Jacob Davis-Hansson

1

Não quero que o Elastic IP seja ativado para esses aplicativos, pois eles têm vida curta.

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 :

Para permitir que uma instância em sua sub-rede pública se comunique com a Internet, ela deve ter um endereço IP público ou um endereço IP Elastic associado a um endereço IP privado na sua instância . Sua instância está ciente do espaço de endereço IP privado (interno) definido na VPC e na sub-rede. O gateway da Internet fornece logicamente o NAT um a um em nome da sua instância, para que, quando o tráfego saia da sua sub-rede VPC e vá para a Internet, o campo de endereço de resposta seja definido como o endereço IP público ou o endereço IP elástico da sua instância e não seu endereço IP privado. Por outro lado, o tráfego destinado ao endereço IP público ou Elastic IP da sua instância tem o endereço de destino convertido no endereço IP privado da instância antes que o tráfego seja entregue à VPC.

Os EIPs atribuídos automaticamente que acompanham uma nova instância não custam nada e desaparecem automaticamente quando a instância é desativada.


Obrigado pela sua resposta, adicionamos mais informações à pergunta que explica o problema que estou vendo e como solucioná-lo por meio do console da web. Talvez eu esteja entendendo mal o funcionamento da AWS - mas você pode aconselhar ainda mais que eu ficaria muito grato.
ed.

@ed. Eu não estou muito familiarizado com o EB, mas parece que os documentos que você deseja definir aws:ec2:vpc:AssociatePublicIpAddressna 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.
precisa

Saúde, vou tentar isso.
ed.

Eu tentei a bandeira acima sem sucesso. Acho que vou chamar disassociateAddress via sdk.
ed.

1
Para o registro: aws:ec2:vpc:AssociatePublicIpAddressé apenas para a instância ec2, se você configurá-lo como false, disassociateAddressa instância não terá um IP público.
ed.

0

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).


Adicionei isso à configuração do EBS: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },mesmo assim, o Elastic IP está associado a essa instância. Qualquer pista?
Kostanos

1
isso não é verdade, não afeta o eip
A-Developer-Has-No-Name

0

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á.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.