是否可以使负载平衡器(ELB)仅由SNS访问?

时间:2019-07-15 20:50:13

标签: amazon-web-services networking amazon-cloudformation amazon-elb internal-load-balancer

我正在AWS中创建一个内部应用程序负载平衡器。我希望它只能由SNS使用/访问,并阻止其他所有请求。

我尝试查找AWS使用的SNS IP(因此我只能将它们列入白名单),但是范围不可靠。

有什么办法吗?

PS。 我正在使用cloudformation

1 个答案:

答案 0 :(得分:1)

您可以将HTTP端点订阅到Amazon SNS主题。

您可以使用负载均衡器的DNS名称作为终结点,因此会将消息发送到负载均衡器。由于Amazon SNS在Internet上,因此Load Balancer将需要位于公共子网中。

您还需要通过SNS发送到端点的链接确认订阅。 (请参见Using Amazon SNS for System-to-System Messaging with an HTTP/S Endpoint as a Subscriber

要“限制”将流量发送到负载均衡器的功能,以便只有Amazon SNS可以发送请求,您可以在负载均衡器上配置安全组。但是,AWS IP Address Rangesip-ranges.json文件中未列出Amazon SNS,因此您将不知道允许哪些IP地址作为入站流量。

您可以尝试一下以查看SNS似乎使用了哪些IP地址,然后分配更大的CIDR范围,但这不能保证您将知道所有可能的IP地址。因此,您唯一的希望是限制访问,但要冒其他系统/人员向负载均衡器发送流量的风险。

替代设计

您可以重新设计您的应用程序以使用Amazon SQS队列,而不是通过负载均衡器将消息从Amazon SNS通过负载均衡器发送到您的应用程序:

  • 将Amazon SQS队列订阅到Amazon SNS主题
  • 让您的应用程序轮询消息的SQS队列(而不是等待通过HTTP和Load Balancer接收消息)