我试图在Elastic Beanstalk上运行相同应用程序的多个实例上访问端点(因此在负载均衡器后面)。
在所有实例上调用端点的最佳方法是什么 - 并确定它已被接收?
我已经考虑过SNS(这对我们的需求来说有点过分了)。我查看了ELB API来查找实例,然后找到实例的公共dns并调用端点 - 但找不到任何这样的例子。
任何帮助都会很棒。
答案 0 :(得分:0)
如果负载均衡器后面的EC2实例具有公共IP地址,则转到其公共地址。如果您的EC2实例具有专用IP地址,则通过VPN或堡垒主机转到专用地址。
亚马逊的负载均衡器(CLB / ALB / NLB)不支持您想要做的事情。
注意:您的EC2实例应该只有私有IP地址并且位于私有子网中,这样您的EC2实例才能由第三方使用负载均衡器访问。否则,糟糕的演员将绕过你的负载均衡器并直接锤击你的EC2实例。
答案 1 :(得分:0)
忽略它背后的原因,你可以......
构建您的API,例如它可以让任何实例代理您对其他实例的调用。
例如,如果您点击elb-domain.xyz/myendpoint,那么提供请求的实例可以使用AWS API查询其负载均衡器下的可用实例。然后,您的API函数会根据需要将请求代理到所有其他实例。您需要通过标记第二个请求不进一步代理来防止多米诺效应/无限循环。
您可以异步执行此操作,也可以在返回客户端之前等待所有实例成功返回。
这种方法的优点