gpt4 book ai didi

java - 通过 API Gateway 运行 Java Lambda

转载 作者:行者123 更新时间:2023-12-01 17:44:56 24 4
gpt4 key购买 nike

我正在尝试让本地Java程序在AWS Lambda中运行,并使其可以通过HTTP请求调用。我所需要的只是能够在 AWS 中通过 HTTP 复制从命令行本地运行 java 的功能,以便公司中的其他人只需在 Postman 中发送 HTTP 请求即可运行代码(目前,下一步是仅发出请求的 Web 表单),而不是下载 jar 并启动 Java 命令行。

我浏览了 Amazon 网站上的 hello world 教程,能够调整我的代码,并使用 AWS Lambda 控制面板中的测试功能成功运行它。我还可以在 cloudwatch 中查看它运行的日志并观察结果。所以这一切都可以通过 Lambda 控制面板测试功能进行。

因此,我不使用命令行参数,而是以 JSON 格式提供参数,如下所示:

{
"environment": "dev",
"username": "Test",
"password": "Test22",
"storeId": "TESTMA0001",
"data": "a,b,c,d"
}

当从测试函数调用 lambda 时,这非常有效。

但是,我希望能够在 HTTP 请求正文中输入此内容并运行我的 lambda,因此我通过 aws lambda 面板中的 gui 添加了一个 api 网关,选择了 HTTP API 类型和默认选项。

然后,我向 api 端点发送一个 HTTP GET 请求,其正文与我在测试面板中使用的输入相同,但每当我运行它时,我都会收到内部服务器错误。我打开了网关 api 的访问日志,我得到以下信息,我的 lambda 没有由 api 启动,因为当我使用 API 时没有写入 lambda 日志,当我从 AWS lambda 启动它时,它会被写入网页面板。

{
"requestId": "KByVuheeoAMEPLA=",
"ip": "",
"requestTime": "27/Mar/2020:02:25:40 +0000",
"httpMethod": "GET",
"routeKey": "$default",
"status": "500",
"protocol": "HTTP/1.1",
"responseLength": "35"
}

我的handleRequest函数接受一个字符串、字符串映射作为输入并返回一个字符串作为输出:

public class StoreCategoryImporter implements RequestHandler<Map<String,String>, String> {
@Override
public String handleRequest(Map<String,String> event, Context context)

我什至不使用上下文对象,但它在教程中存在,所以它仍然存在。

我在谷歌上搜索了几个小时,但没有找到解决方案,任何帮助将不胜感激。我发现大多数 AWS 教程都跳过了一些关键细节,或者他们没有为 POJO 开发人员提供它并使用我不理解的 js。

提前谢谢您。

最佳答案

为了模拟 API 网关事件以在 lambda 中进行测试,lambda 控制台有一些预设值。在您的 lambda 中,您转到配置测试事件并选择您想要模拟的事件,例如:

enter image description here

或者,您可以将 lambda 中的真实事件打印到 CloudWatch 日志中,并将其用于测试。

关于java - 通过 API Gateway 运行 Java Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60879277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com