【问题标题】:AWS API gateway and Load balancer secure communicationAWS API 网关和负载均衡器安全通信
【发布时间】:2018-01-24 15:52:03
【问题描述】:

我们在 EC2 集群前使用 AWS API 网关和负载均衡器。 Gateway 需要公共托管负载均衡器,这就是为什么我们将负载均衡器放在 VPC 的公共子网中,并将我们的所有 EC2 实例放在私有 VPC 中。

我们面临的问题是,由于我们的负载均衡器位于公共 VPC 中,我们如何才能使并非来自 API 网关的请求无效。当且仅当请求通过我们的 API 网关时,我们只想将来自负载均衡器的请求传递到 EC2 实例。

当我探索可能的解决方案时,有人建议使用来自网关的公共客户端证书来验证您的请求。我能够从网关获取此公共证书,但没有找到任何方法在负载均衡器中对其进行配置。

【问题讨论】:

    标签: amazon-web-services ssl aws-api-gateway elastic-load-balancer


    【解决方案1】:

    现在正确的解决方案是使用 VPC 链接和来自 AWS 的网络负载均衡器。您在 VPC 资源(例如 EC2 实例)前面设置了一个网络负载均衡器,并创建了一个 API Gateway VPC 链接。在 API Gateway 集成中,您选择 VPC Link,您可以访问网络负载均衡器并扩展您的私有 EC2 实例。

    【讨论】:

      【解决方案2】:

      您无法在负载均衡器级别验证客户端证书。您需要在容器级别对其进行验证。

      您可以采用另一种方法,将负载均衡器保持私有并使用 Lambda 函数(放置在 VPC 中)代理到负载均衡器,您可以在其中验证客户端证书。

      【讨论】:

      • 感谢您的输入,我已经探索了 lambda 方式,但我不想这样做,因为它会在系统中添加另一个跃点。与另一个网关(如:Kong)相比,我对 AWS API 网关提供给我的功能感到非常困惑。
      • 你知道使用 lambda 方法会对性能造成什么影响吗?
      • 性能取决于 Lambda 的内存分配以及是否冷启动。因此,假设您避免冷启动,这将是合理的,但如果您可以使用有效负载进行负载测试以查看添加的延迟会更好
      • 当我进一步探索 lambda 代理方式时,我发现它需要 ENI 和私有 IP 范围才能访问 VPC 资源。由于我的 ELB 将位于私有子网中,我不确定如何将 ENI 附加到负载均衡器以通过 labmda 访问它?如果您对此有任何想法,那将很有帮助。
      • 将 Lambda 放入 VPC 时,会自动附加 ENI。
      【解决方案3】:

      在进一步分析中,我发现 AWS API 网关方法存在以下问题。

      1. 当 lambda 容器未重用或处于冷态时,VPC 对 lambda 容器初始化时间有巨大影响。根据其他人的经验,它可能需要 10 到 15 秒,并且可能会延迟响应时间。即使它是一个热 lambda,当您从它访问 VPC 时,也会关联一个时间延迟成本。
      2. Lambda 需要足够数量的 ENI 和私有 IP 范围来支持并行执行。这意味着如果在运行时,负载增加并且如果没有任何 ENI 空闲,则请求将失败。我们不确定是否可以在运行时根据请求负载动态增加 ENI。
      3. 如果由于 ENI 不可用而出现任何错误或超时,AWS 不会为其创建任何日志,您可能对错误来源一无所知。

      【讨论】:

        猜你喜欢
        • 2017-08-09
        • 2014-03-09
        • 2020-03-24
        • 2022-01-26
        • 2020-08-23
        • 2022-01-15
        • 2019-09-03
        • 2021-07-16
        • 2021-05-19
        相关资源
        最近更新 更多