我正在创建一个Lambda函数,它可以调用我服务器上的某些功能。
我想针对我的服务器的本地实例测试Lambda函数,这样我就不必部署到AWS来测试运行整个流程。
有没有办法从Lambda内部调用我的本地机器的开发服务器而无需继续部署到AWS(或其他一些远程服务器)?
如果您在VPC和本地网络之间设置VPN或直接连接,则可以进行此操作。
但老实说,这可能比简单地部署到EC2实例更昂贵,更复杂。自动部署应该简单明了。
信息太少了。这取决于lambda的配置方式。如果它在VPC中,那么如何配置VPC。您的笔记本电脑是否具有静态IP,是否位于防火墙后面。
一般来说,你需要的是:
否则,如果您的笔记本电脑在一些特殊的安全网络内,那么VPN就像克里斯建议的那样,这可以确保您的服务不会暴露在互联网上
一些可能有用的链接:
我将专门编写Java语言:
AWS Lambda函数是普通的旧Java对象,因此您可以编写单元测试以在本地触发它们。即使您使用的是RequestHandler接口,也需要该函数的入口点来提供
public O handleRequest(我输入,Context上下文);
方法,如果您正在使用上下文变量,您可以轻松地模拟,例如:
@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());
}
如果您编写这样的单元测试,您也可以通过测试服务器上的Jenkins等CI工具触发它们。
因此,上述测试适用于TEST env变量,但您也可以为DEV环境编写配置。与大多数解释语言相比,Java语言为这种泛化和抽象提供了更丰富的工具。