一个 运行 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
如何在本地 运行 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