【问题标题】:How to use AWS VPC endpoints in NAT enabled subnets?如何在启用 NAT 的子网中使用 AWS VPC 终端节点?
【发布时间】:2020-06-16 15:37:19
【问题描述】:

我正在使用一些 AWS Lambda 函数,它们位于私有子网中,
这些私有子网为函数需要访问的服务配置了 VPC 终端节点,
当前设置不使用 NAT 网关,因此来自函数的所有流量都通过 VPC 端点。

我现在有一个需要使用 NAT 网关的用例,
但是启用 NAT 是否意味着函数将不再使用 VPC 端点进行外部服务访问,而是使用 NAT?

【问题讨论】:

    标签: amazon-web-services architecture amazon-vpc


    【解决方案1】:

    我认为它的工作原理如下。对于:

    网关端点(S3、DynamoDB)

    当您创建它们时,它们的路由会自动添加到我们的路由表中。文档says

    如果您的路由表中有适用于所有互联网的现有路由 指向 Internet 网关、端点的流量 (0.0.0.0/0) 路由优先于所有发往服务的流量, 因为服务的 IP 地址范围比 0.0.0.0/0。所有其他互联网流量都会进入您的互联网网关,包括发往其他区域的服务的流量。

    接口 VPC 端点

    它们通过修改服务的 DNS 中的 IP 地址来工作。 IP 地址将是端点接口的私有地址。文档says:

    托管区域包含默认 DNS 名称的记录集 解析为的服务(例如,ec2.us-east-1.amazonaws.com) 端点网络接口的私有 IP 地址 专有网络。这使您能够使用其向服务发出请求 默认 DNS 主机名,而不是特定于端点的 DNS 主机名。

    要使用私有 DNS,您必须将以下 VPC 属性设置为 true: enableDnsHostnames 和 enableDnsSupport。

    结论

    所以在这两种情况下,优先考虑的是接口,而不是互联网。我建议检查提供的链接。他们有更多信息和例子来仔细检查我的结论。

    【讨论】:

    • 那么除了 0.0.0.0/0 以外的任何东西都被赋予了更高的优先级?
    【解决方案2】:

    VPC 端点还是 NAT 网关?

    EC2、RDS、Lambda 和 ElastiCache 等 AWS 服务带有一个弹性网络接口 (ENI),它支持通过私有终端节点在您的 VPC 内进行通信。但是,许多 AWS 服务提供 REST API,只能通过 Internet 获得。一些示例:S3、DynamoDB、CloudWatch、SQS 和 Kinesis。

    有三个选项可让您从私有子网访问这些服务:

    • VPC Endpoint 类型:Gateway Endpoints 是免费的,但仅适用于 S3 和 DynamoDB。
    • VPC Endpoint 类型:Interface Endpoint 费用为每月 $7.20 和 AZ 加上每 GB 的 $0.01,适用于大多数 AWS 服务。
    • NAT Gateway 可用于访问 AWS 服务或具有公共 API 的任何其他服务。费用为每月 $32.40 和 AZ 加上每 GB 的 $0.045

    在设计网络架构时,请牢记以下经验法则。

    • 为 S3 和 DynamoDB 添加网关端点应该是您的默认选项。
    • 是否需要通过 Internet 访问非 AWS 资源,添加 NAT 网关。如果 AWS 服务的流量证明额外的接口终端节点是合理的,请进行计算。
    • 您是否仅从私有子网访问 AWS 服务?不超过四种不同的服务?使用接口端点。否则,请进行数学计算以计算接口端点和 NAT 网关的成本。

    参考链接: https://cloudonaut.io/advanved-aws-networking-pitfalls-that-you-should-avoid/

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2021-06-22
      • 2017-12-31
      • 1970-01-01
      • 2021-07-22
      • 2022-12-11
      • 2021-05-15
      • 2019-05-01
      • 1970-01-01
      相关资源
      最近更新 更多