Amazon web services 如何使Lambda函数与本地计算机上运行的服务器通信?
我正在创建一个Lambda函数,用于调用服务器上的某些功能 我想针对服务器的本地实例测试Lambda函数,这样就不必为了测试运行整个流程而部署到AWSAmazon web services 如何使Lambda函数与本地计算机上运行的服务器通信?,amazon-web-services,aws-lambda,localhost,Amazon Web Services,Aws Lambda,Localhost,我正在创建一个Lambda函数,用于调用服务器上的某些功能 我想针对服务器的本地实例测试Lambda函数,这样就不必为了测试运行整个流程而部署到AWS 是否有任何方法可以从Lambda内部调用我的本地计算机的开发服务器,而不必继续部署到AWS(或其他远程服务器)?如果您在VPC和本地网络之间设置VPN或直接连接,这是可能的 但老实说,这可能比简单地部署到EC2实例更昂贵、更复杂。自动化部署应该简单明了。信息太少。这取决于lambda的配置方式。如果它在专有网络中,那么该专有网络是如何配置的。你的
是否有任何方法可以从Lambda内部调用我的本地计算机的开发服务器,而不必继续部署到AWS(或其他远程服务器)?如果您在VPC和本地网络之间设置VPN或直接连接,这是可能的
但老实说,这可能比简单地部署到EC2实例更昂贵、更复杂。自动化部署应该简单明了。信息太少。这取决于lambda的配置方式。如果它在专有网络中,那么该专有网络是如何配置的。你的笔记本电脑是否有静态IP,如果它位于防火墙后面 一般来说,您需要的是:
- 您的服务暴露于Internet:
- 本地计算机的公共IP
- 端口(您的服务在其上公开)在被防火墙等阻止时打开
- 您的lambda可以访问Internet(路由、安全组/acl/网关):
- 如果lambda在公共子网中,请参阅AWS文档,了解如何设置IGW
- 如果在专用子网中,请参阅AWS文档,了解如何设置NAT GW
- 在VPC中设置
- 设置
- 设置访问权限
@Test
public void testAddAddressHandlerDevStage() throws Exception {
Context context = mock(Context.class);
when(context.getInvokedFunctionArn()).thenReturn("arn:aws:lambda:eu-central-1:xxxxxxxxxxx:function:updateAddress:TEST");
Address newAddress = new Address();
new AddAddress().handleRequest(newAddress, context);
assertNotNull(newAddress.getId());
}
如果您编写这样的单元测试,还可以通过测试服务器上的CI工具(如Jenkins)触发它们
因此,上面的测试使用testenv变量,但您也可以为DEV环境编写配置。与大多数解释语言相比,Java语言为此类泛化和抽象提供了更丰富的工具。如果您的本地计算机可以公开访问,并且您的服务器可以在开放端口上调用,那么我不明白为什么它不能正常工作。如果DynDNS hack无法公开访问,它可能会起作用 您主要关心的是使用您最喜欢的IDE进行调试吗?若并没有,那个么设置EC2服务器是很便宜的,您只需要启动它进行测试。不使用时不收费。或者,如果您需要一个更丰富的环境来测试和调试它,也可以签出
还要记住,您的EC2实例可以使用Route 53专用主机区域将任意url映射到您的实例,这会使事情更干净,更接近生产环境 您可能还想看看本地测试Lambda函数的选项,包括SAM本地和各种GitHub项目?它只是对服务器进行http[s]调用,对吗?这些可以在lambda环境之外进行测试吗?