API调用AWS负载均衡器后面的所有实例

时间:2017-10-10 20:36:29

标签: amazon-web-services amazon-ec2 elastic-load-balancer

我试图在Elastic Beanstalk上运行相同应用程序的多个实例上访问端点(因此在负载均衡器后面)。

在所有实例上调用端点的最佳方法是什么 - 并确定它已被接收?

我已经考虑过SNS(这对我们的需求来说有点过分了)。我查看了ELB API来查找实例,然后找到实例的公共dns并调用端点 - 但找不到任何这样的例子。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

如果负载均衡器后面的EC2实例具有公共IP地址,则转到其公共地址。如果您的EC2实例具有专用IP地址,则通过VPN或堡垒主机转到专用地址。

亚马逊的负载均衡器(CLB / ALB / NLB)不支持您想要做的事情。

注意:您的EC2实例应该只有私有IP地址并且位于私有子网中,这样您的EC2实例才能由第三方使用负载均衡器访问。否则,糟糕的演员将绕过你的负载均衡器并直接锤击你的EC2实例。

答案 1 :(得分:0)

忽略它背后的原因,你可以......

构建您的API,例如它可以让任何实例代理您对其他实例的调用。

例如,如果您点击elb-domain.xyz/myendpoint,那么提供请求的实例可以使用AWS API查询其负载均衡器下的可用实例。然后,您的API函数会根据需要将请求代理到所有其他实例。您需要通过标记第二个请求不进一步代理来防止多米诺效应/无限循环。

您可以异步执行此操作,也可以在返回客户端之前等待所有实例成功返回。

这种方法的优点

  • 可以在没有公共IP的情况下将您的实例保留在私有VPC中。
  • 您的客户无需了解实例详情。
  • 它可以适应自动缩放(您必须处理尚未准备好处理请求的新缩放实例)
  • 一个IAM角色,允许实例完成此任务,而无需将访问/密钥存储在其他位置。