【发布时间】:2021-12-12 20:21:18
【问题描述】:
一开始我想提一下,我刚刚开始学习 AWS 工具。
我有两个用 Java 创建的请求处理程序。它们都具有相同的handleRequest 方法,如下所示
public class SecondHandler implements RequestHandler<JSONObject, List<Candidate>> {
@Override
public List<Object> handleRequest(JSONObject request, Context context) {
List<Object> objectList = new ArrayList<>();
System.out.println(request + " <<");
String isActive = String.valueOf(request.getString("isActive"));
if(!isActive) return objectList;
for(Object obj : objectList) {
// here will go logic
}
return objectList;
}
}
第一种方法用于返回一些对象列表,而不向它发送任何参数。当使用 AWS lambda 调用它以及使用 AWS 网关时,它工作正常。
我试图调用的第二种方法是发送 JSONObject,其中包含一个类似的文件
{
"isActive" : "yes"
}
但是当我进行测试时,我收到错误"JSONObject[\"isActive\"] not found."。而且我确信这与我的 JSONObject request 参数有关,因为当我将其类型更改为 Map<String, String> 时它工作正常,我在使用 AWS Lambda 时得到了我想要的。但是当我尝试使用 AWS Gateway 调用它时,Map 就位,我得到了
{ "message" : "Internal server error" }
检查日志时,我可以看到解析有问题。所以基本上AWS网关无法解析Map<String, String>。
有人可以告诉我,我对 lambda 和网关有什么不了解的地方吗?为什么这些工具在解析简单 JSON 时会出现这样的问题?我该怎么办?
附言。在使用Map<String, String> 时,我也遇到了第一种方法的解析问题,这就是我决定使用JSONObject 的原因,这解决了第一种方法的问题。
【问题讨论】:
-
您使用的是代理集成还是非代理集成?
-
@ErmiyaEskandary 非代理
-
您指定的方法请求有效负载是什么?你有什么规定吗?
-
我没有指定请求。我正在发送简单的 json 对象。
-
你能把你的整个
Handler贴出来吗?它是否实现了任何接口?
标签: java amazon-web-services aws-lambda