给定:
我们想要重用的一个(或多个)弹性 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。