首页 > 解决方案 > 从运行在 VPC 中的 AWS Lambda 访问 ECS 容器

问题描述

我在公共 VPC(无 NAT 网关)中有一个 lambda 函数,它应该调用另一个 ECS 服务,该服务可通过负载均衡器公开访问。由于 lambda 函数无法访问 Internet,因此无法访问 ECS 服务。我可以以某种方式使用内部网络(特别是现有的负载均衡器),这样我就不需要设置 NAT 网关了吗?一切都部署到同一个公共子网。

标签: amazon-web-servicesaws-lambdaamazon-ecsamazon-vpc

解决方案


如果所有内容都部署到公共子网(或者甚至在不同的子网中但在同一个 vpc 中),您可以简单地创建一个新的“内部”负载均衡器。有两种负载均衡器:

  1. 上市
  2. 内部的

这个内部负载均衡器将可供您的 lambda 函数使用(通过私有 ip,通过 LB 提供的 DNS 解析)。(假设您当前的负载均衡器是公共负载均衡器,其 DNS 解析为公共 IP。)我不知道公共负载均衡器可以通过私有 IP 访问的任何方式。

然而,在这一点上,我会问一个看似无关但可能很重要的设计问题:是什么迫使您将 lambda 函数放在 VPC 的公共子网中?lambda 函数永远不会有公共 IP,这意味着它永远无法在没有 NAT 网关的情况下访问互联网,无论它放在哪里。一个有趣的后续问题是,是什么阻止您将 lambda 函数放在 VPC 之外,在那里它可以开放访问互联网?:)


推荐阅读