在 AWS 上使用 NAT 加私有子网与具有锁定安全组和 ACL 的公共子网相比有什么优势?

sir*_*not 6 networking amazon-web-services amazon-vpc

我的场景:我有一个 SQS 队列,其中有一个自动扩展的 EC2 工作器组,将来自队列的消息处理到不同区域的数据库中。

EC2 工作人员的隐含网络需求:

  • 接入公网与SQS交互
  • 接入公网与不同区域的dB进行交互
  • 限制未经请求的入站流量,因为这些不是 Web 服务器

网络选项(我知道):

  • 将 EC2 Worker 置于没有弹性 IP 的私有子网中,并允许它们通过在公共子网中运行的 NAT 与 Internet 通信。
  • 将 EC2 Worker 放在具有公共/弹性的公共子网中?IP 地址。将它们放在一个限制性的安全组中,以禁止意外的入站流量。将限制性 ACL 应用于子网以禁止子网级别的意外入站流量。

我已经看到了许多将第一种方法与 NAT 结合使用的建议,包括在 AWS 自己的文档中。我还没有看到任何关于第二种方法的建议。

NAT 似乎是一个昂贵的选择,很容易变成网络瓶颈,并且是单点故障。为什么如此频繁地推荐此选项?第二种方法是否有我不知道的缺点或交易破坏者?

这个问题类似但不一样。我还阅读了有关堆栈溢出的线程。我还阅读了AWS VPC 用户指南

Joh*_*aff 2

许多配置需要共享一个公共 IP。他们需要 NAT。您的场景的网络流量都是内部发起的。(SQS 被轮询。)对于这种类型的流量,提供 NAT 实例没有任何优势。