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.
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.small
des 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 .
Réponses:
Lorsque vous utilisez le type d'environnement "Instance unique", vous obtenez toujours un EIP.
Dans le guide du développeur Beanstalk, Types d'environnement :
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.
la source
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 :
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.
la source
aws:ec2:vpc:AssociatePublicIpAddress
dans 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.aws:ec2:vpc:AssociatePublicIpAddress
ne concerne que l'instance ec2, si vous la définissez sur false,disassociateAddress
l'instance n'aura pas d'adresse IP publique.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).
la source
{ "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },
même ainsi, Elastic IP s'associe à cette instance. Un indice?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.
la source