将 aws lambda 函数连接到我的 VPN

问题描述 投票:0回答:2

我开发了一个简单的 lambda 函数,它向 API 发送 get 请求,该 API 放置在 VPN 中。

显然,当我在本地测试 lambda 时,它工作得很好,因为我在笔记本电脑上启用了 VPN,但是当我部署相同的 lambda 并远程测试它时,我得到:

java.net.UnknownHostException:xxxxx:名称或服务未知。

  • 有关如何将本地 VPN 配置扩展到 AWS 的任何想法 包含 lambda 的 vpc?

  • 如何创建一个包含VPN的ec2作为代理 配置?

我被困在这里并愿意接受任何合理的解决方案。

amazon-web-services amazon-ec2 aws-lambda vpn amazon-vpc
2个回答
4
投票

我遇到了类似的问题,我想要一个 Lambda 函数从 VPN 后面的 API 获取数据,但我对客户端 VPN 没有任何控制权。如果您能够使用 OpenSwan 安装所需的客户端 VPN 配置,那么 AWS Site-to-Site VPN 就是正确的答案。它将确保 Lambda 和其他 AWS 服务可以与受 VPN 保护的服务进行干净的交互。

如果您无法设置站点到站点 VPN,则 Lambda 无法直接调用 API。那么,您的目标可能是找到某种方式作为客户端连接到 VPN,调用 API 获取数据,然后将数据存储在 VPC 中。

请注意,此解决方案可能不适合您的用例。它对我有用只是因为我需要定期调用 API 来更新数据以进行分析和报告,而这目前是在我的计算机上完成的。我可以通过 API 访问数据,但不能直接访问受 VPN 保护的数据库或系统。

  1. 设置具有连接到公共互联网的互联网网关的 VPC。这包括 VPC、子网、路由表和互联网网关。网上有很多指南,但我使用了这个“OpenVPN+VPC+VPN 客户端配置”视频作为指导。解说员从 6:00 开始设置具有公共互联网访问权限的 VPC。
  2. 使用 Amazon Linux 2 AMI 启动 EC2 实例。
  3. 通过 SSH 连接到新的 EC2 实例,并安装 OpenVPN 软件包 (此 StackOverflow 线程包含说明)
  4. 将所有必需的 VPN 配置文件连同您的获取脚本复制到 EC2 实例。我使用SCP来完成这个任务。因为我使用 OpenVPN,所以我复制了我的 .conf 文件。
  5. 通过此 EC2 实例连接到 VPN 并运行您的 API 脚本。

这允许您将数据从 API 获取到 EC2 实例中,然后数据可以存储在 S3 存储桶、DynamoDB 中或以最适合您需求的任何形式存储在 VPC 上。

请注意,当实例停止或终止时,脚本和配置文件将默认被删除。如果您打算定期使用此方法来提取数据,那么最好将文件保存在 S3 存储桶中并根据需要将它们传输到 EC2,这样您就不必每次都从计算机上 SCP 文件时间。

无需每次都重新设置VPC、子网、路由表和互联网网关。它们可以保留在原处并且不会产生任何费用。您将需要支付 EC2 实例费用。


1
投票

如果您的 Lambda 需要访问专用网络(AWS 外部)上的终端节点,您需要将运行 Lambda 的 VPC 与您的专用网络连接起来。

为此,您可以检查 AWS Site-to-Site VPN,这将允许您将 VPC 与远程网络连接。

© www.soinside.com 2019 - 2024. All rights reserved.