Lancer des instances via Elastic Beanstalk sans Elastic IP configuré

10

Je crée un outil pour déployer des images Docker sur EC2 via ElasticBeanstalk, afin que l'équipe de développement puisse rapidement faire la démonstration de son travail sans avoir à fusionner. Je ne veux pas qu'Elastic IP soit activé pour ces applications car elles sont de courte durée.

La raison pour laquelle je pose cette question est que si mon outil crée plus de 5 applications (et il l'a assez rapidement), toute nouvelle application échouera car aucune adresse IP élastique ne peut être attribuée à la nouvelle application. En effet, un compte AWS dispose généralement d'un maximum de 5 adresses IP élastiques . Je peux aller sur la console Web aws et choisir «Dissocier l'adresse IP élastique» (voir ci-dessous) sur une instance, après quoi l'instance ec2 obtiendra une nouvelle ip (après quelques minutes). C'est ce que je veux, mais je veux le faire par programme, et je préférerais démarrer l'application sans elle au lieu de le faire une fois l'instance créée.

dissocier l'option de menu

Existe-t-il une option de configuration que je peux utiliser pour désactiver Elastic IP pour la nouvelle instance?

J'utilise le nœud aws-sdk , mais tous les conseils dans n'importe quelle langue feront l'affaire.

Je crée m1.smalldes instances uniques.

Si cela n'est pas possible lors du lancement, je devrai dissocier l'IP Elastic de l'instance à l'aide de la fonction EC2.disassociateAddress .

éd.
la source
Si vous lancez dans un sous-réseau privé: stackoverflow.com/questions/39086022/…
lonewarrior556

Réponses:

10

Lorsque vous utilisez le type d'environnement "Instance unique", vous obtenez toujours un EIP.

Dans le guide du développeur Beanstalk, Types d'environnement :

Un environnement à instance unique contient une instance Amazon EC2 avec une adresse IP Elastic.

La désactivation de l'option "Associate Public IP Address" n'a aucun effet.

Passez à l'environnement "Load-balancing, Autoscaling" pour vous en sortir sans EIP.

Jens Bannmann
la source
Contrairement aux autres réponses ici, cela a en fait résolu mon problème, alors merci :) Pour les futurs voyageurs, dans la nouvelle boîte de dialogue de création d'environnement, vous choisissez l'option "Load Balancing" sous le bouton "Configure More Options" à la fin de la création de l'environnement forme.
Jacob Davis-Hansson
1

Je ne veux pas qu'Elastic IP soit activé pour ces applications car elles sont de courte durée.

Si vous êtes dans un sous-réseau public d'un VPC (ce qui est probable), un est requis pour que cette instance puisse communiquer avec Internet. Par http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :

Pour permettre à une instance de votre sous-réseau public de communiquer avec Internet, elle doit avoir une adresse IP publique ou une adresse IP élastique associée à une adresse IP privée sur votre instance . Votre instance ne connaît que l'espace d'adressage IP privé (interne) défini dans le VPC et le sous-réseau. La passerelle Internet fournit logiquement le NAT un à un au nom de votre instance, de sorte que lorsque le trafic quitte votre sous-réseau VPC et va vers Internet, le champ d'adresse de réponse est défini sur l'adresse IP publique ou l'adresse IP élastique de votre instance. , et non son adresse IP privée. À l'inverse, le trafic destiné à l'adresse IP publique ou à l'adresse IP élastique de votre instance a son adresse de destination traduite en adresse IP privée de l'instance avant que le trafic ne soit distribué au VPC.

Les EIP attribués automatiquement qui viennent avec une nouvelle instance ne coûtent rien, et ils disparaissent automatiquement lorsque l'instance est mise hors service.

ceejayoz
la source
Merci pour votre réponse, j'ai ajouté plus d'informations à la question expliquant le problème que je vois et comment je peux le contourner via la console Web. Je peux me méprendre sur le fonctionnement d'AWS - mais vous pourriez dire que je vous serais très reconnaissant.
éd.
@ed. Je ne suis pas très familier avec EB mais cela ressemble aux documents que vous souhaitez définir aws:ec2:vpc:AssociatePublicIpAddressdans votre configuration EB (et que cela est particulier aux EB à instance unique). Sinon, demandez à AWS une augmentation de votre limite EIP - d'après mon expérience, ils l'accorderont volontiers dans ce genre de situation.
ceejayoz
cheers je vais essayer ça.
éd.
J'ai essayé le drapeau ci-dessus en vain. Je pense que je vais juste appeler disassociateAddress via le sdk.
éd.
1
Pour mémoire: aws:ec2:vpc:AssociatePublicIpAddressne concerne que l'instance ec2, si vous la définissez sur false, disassociateAddressl'instance n'aura pas d'adresse IP publique.
éd.
0

Il existe une option d'environnement Beanstalk élastique qui pourrait être ce que vous recherchez.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer

Espace de noms: aws: ec2: vpc AssociatePublicIpAddress: false

Si vous le définissez, tous les nœuds créés par cet environnement n'auront pas d'adresse IP publique. Le trafic entrant devra utiliser un équilibreur de charge. Le VPC et les sous-réseaux devront être associés à une passerelle NAT ou une passerelle Internet pour obtenir un accès Internet sortant. Si vous ne disposez pas d'un accès Internet sortant, la génération Elastic Beanstalk échouera (elle ne pourra pas accéder aux services AWS).

Sam
la source
J'ai ajouté ceci à la configuration EBS: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },même ainsi, Elastic IP s'associe à cette instance. Un indice?
Kostanos
1
ce n'est pas vrai, cela n'a aucun effet sur eip
A-Developer-Has-No-Name
0

Après avoir dissocié l'adresse IP élastique, vous disposez d'environ 10 secondes pour la «libérer». Si vous le relâchez, il ne reviendra pas.

lonewarrior556
la source