在AWS上使用NAT和私有子网与在locking安全组和ACL的公共子网上有什么优势?

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

EC2员工的隐含networking需求:

  • 访问公共互联网与SQS互动
  • 访问公共互联网与不同地区的dB交互
  • 限制未经请求的入站stream量,因为这些不是Web服务器

networking选项(我知道):

  • 将EC2工作人员置于没有弹性IP的私有子网中,并允许他们通过运行在公有子网中的NAT与互联网进行通信。
  • 把EC2工人放在一个公共的子网中,公开/有弹性吗? IP地址。 把它们放在一个限制性的安全组里,禁止意外的入站stream量。 将限制性ACL应用于子网,以禁止在子网级别发生意外的入站stream量。

我已经看到了许多有关在NAT中使用第一种方法的build议,包括在AWS自己的文档中。 我还没有看到第二种方法的build议。

NAT看起来像一个昂贵的select,可以很容易地变成networking瓶颈,是一个单一的故障点。 为什么这个选项经常被推荐? 第二种方法是否有缺点,或者我不知道?

这个问题是相似的,但不一样。 我也读过堆栈溢出这个线程。 我还阅读了AWS VPC用户指南 。

许多configuration需要共享一个公共IP。 他们需要NAT。 您的scheme的networkingstream量全部由内部启动。 (SQS轮询。)使用这种types的stream量,提供NAT实例没有任何优势。