一个 运行 aws lambda 如何在本地 (java) 进行测试

how would one run aws lambda locally (java) for testing

如何在本地 运行 aws lambda (java) 进行测试。

我找到了节点的一些信息,但找不到 java。

据我所知,在本地实际触发 lambda 函数并没有什么神奇之处。看看:http://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html

http://docs.aws.amazon.com/lambda/latest/dg/java-gs.html

根据您的 lambda 代码,您需要构建输入和(可能是上下文)并将它们传递到编写您自己的小型测试包装器的函数中。

除非你这样做是为了单元测试,否则经历这些麻烦是没有意义的。如果您这样做是为了测试,您可能需要模拟您的 lambda 可能使用的其他外部 AWS 服务。

如果您想对 Amazon Lambda 函数执行本地测试,并在 Amazon 中构建无服务器应用程序,您可以使用 AWS Toolkit for Eclipse

但是自 2017 年 8 月 11 日起,Amazon 提供了 AWS SAM Local,这是一个 CLI 工具,允许我们在本地测试和调试我们的 AWS Lambda 函数。 SAM Local 支持用 Node.js、Java 和 Python 编写的 Lambda 函数。

请在此处投票 实施 Intellij IDEA 对 Amazon Lambda 的支持:

SAM 本地 - http://docs.aws.amazon.com/lambda/latest/dg/test-sam-local.html 和 docker-lambda - https://github.com/lambci/docker-lambda 对于只需要 javaee 和项目源的 API 运行良好。 我仍在尝试弄清楚如何设置类路径以包含 gradle 依赖项。

有许多项目正在本地 运行 整个 AWS 堆栈。

Java 我相信主要的选择是 Localstack

如果你正在使用 Java脚本,你可以去 Serverless

我一直在使用这些 docker 图片 https://github.com/lambci/docker-lambda

如果您使用的是 IntelliJ,则有 aws-toolkit - https://plugins.jetbrains.com/plugin/11349-aws-toolkit/

效果很好,您可以设置环境变量等。它需要您在本地计算机上安装 docker 运行。虽然不是很友好。

如果您使用的是无服务器,则可以sls offline

Lambda java 测试有了新的升级。

@Test 
public void testLoadEventBridgeEvent() throws IOException {
    // Given
    ObjectMapper objectMapper = new ObjectMapper();
    InputStream eventStream = this.getClass().getResourceAsStream("event.json");
    ScheduledEvent event = objectMapper.readValue(eventStream, ScheduledEvent.class);
    EventHandler<ScheduledEvent, String> handler = new EventHandler<>();
    
    // When
    String response = handler.handleRequest(event, contextMock);
    
    // Then
    assertThat(response).isEqualTo("something");
}

请阅读本文 https://aws.amazon.com/cn/blogs/opensource/testing-aws-lambda-functions-written-in-java/?nc1=h_ls