我们使用的一项新的api服务要求我们给他们一个清单,列出我们的调用将来自的所有IP地址;如果我们从任何其他IP地址进行api调用,则调用将失败。
在此之前已经问过这个问题 ,但是我想知道在2019年是否有任何更简单/更简便/更低廉的费用解决方案。
我们的设置
我找到的解决方案
为每个ec2实例提供一个弹性(静态)ip地址。这对我们来说不是一个很好的解决方案,因为随着我们希望继续扩大规模,所需的IP地址数量将继续增长{ref}
设置两个NAT实例(一个实例不足,因为这将是单点故障)。我希望有比此选项更简单且成本更低的东西。 {ref} {ref}
创建新的ec2实例并将其放在网络负载均衡器后面。再次,复杂且昂贵。 {ref}
是否有新的,更容易的,成本更低的解决方案?我以前从未使用过AWS Lambda。也许可以从一个IP地址运行Lambda函数吗?到目前为止,我没有太多想法。感谢您的宝贵时间。
答案 0 :(得分:2)
NAT是最好的解决方案,并且不应该花比Web服务器更多的钱。
使用NAT的最简单方法是NAT Gateway。定价取决于地区,但大约为每小时$ 0.05,这比t3.medium
EC2实例的价格略高。您还需要为数据收取每GB的费用,该费用可以快速累加。从积极的方面来看,Amazon为您管理基础架构,包括补丁和高可用性。
NAT Instance是运行特殊配置的AMI的EC2实例。您可能可以在t3.micro
实例上运行它,而每小时的费用为0.01美元,这可能远低于您的任何Web服务器。如果有任何问题,您将负责应用补丁并在深夜醒来。
您可能可以摆脱任何一种类型的单个NAT。您将为此支付跨可用区流量($ 0.01 / GB),因此如果您在NAT上移动大量数据,这将是不经济的。能否从两个NAT获得更高的可用性是一个折衷,因为您一次只能在路由表中引用一个。因此,如果其中一个发生故障,则必须更新路由表以指向另一个,这可能会花费与建立新实例相同的时间。
您不能使用Lambda,因为它需要具有永久的IP地址分配,并且您无法使用Lambda进行控制。您可以编写自己的代理服务器,在EC2上运行,但是其成本与NAT实例相同。