:
我们想要重用的一个(更多)弹性IP。 (IP池)
CloudFormation模板,其机器具有与之关联的弹性IP。 (通过AWS :: EC2 :: EIPAssociation)
启动/拆除从共享EIP池获取ips的多个CloudFormation堆栈。 (ip是堆栈中的参数,在堆栈启动之前计算)
我的期望是,如果一个VPC / CloudFormation堆栈已经在使用EIP,其他尝试使用它将会失败。
事实证明,如果您尝试在另一个堆栈中使用相同的EIP,它将起作用。 EIP将绑定到创建的最新堆栈。
更糟糕的是,如果堆栈1使用EIP,堆栈2使用相同的EIP,如果在堆栈2使用后拆除堆栈1,则“窃取”IP,堆栈2将丢失IP(导致IP自由 - 即不绑定到任何实例。)
是否有人遇到此问题?你如何确保你没有在上述情况下跑步?
我必须使用ips的原因是它们被列入白名单以便在我通过公共互联网进行交互的系统中进行访问。流量必须来自该池中的IP,并且不能只抓取任何随机的公共IP。
答案 0 :(得分:1)
如果你想要的东西可以通过云形成,我不是100%。但就我个人而言,我会采用不同的方式。 Cloudformation非常出色,但是当你想开始添加逻辑和条件时,它就会挣扎。
像往常一样创建所有实例,但不要尝试绑定eip,而是使用用户数据脚本和aws cli搜索未附加的eip并附加它。用cli做它会给你更多的力量。
祝你好运
答案 1 :(得分:1)
不要将EIP直接附加到实例,而是附加连接了EIP的ENI。如果ENI正在使用中,它将不会与当前连接的实例分离。