我正在尝试将AWS API Gateway与AWS lambda函数集成 . 在我的集成请求中使用“Lambda代理集成”之前,集成工作完美无瑕 .
当我在集成请求中检查“使用Lambda代理集成”时,我开始得到:
“由于配置错误导致执行失败:格式错误的Lambda代理响应”
我google了一下,意识到我需要以某种格式发回响应:
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"body": "..."
}
然而,尽管如此,我仍然继续看到同样的错误 . 我究竟做错了什么?
这就是我的Lambda函数的样子:
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
return uploadN10KWebsiteRepositoryToS3();
}
private String uploadN10KWebsiteRepositoryToS3() {
/*BitbucketToS3Upload.JsonResponse jsonResponse = new BitbucketToS3Upload.JsonResponse();
jsonResponse.body = "n10k_website repository uploaded to S3...";
String jsonString = null;
try {
ObjectMapper mapper = new ObjectMapper();
jsonString = mapper.writeValueAsString(jsonResponse);
HashMap<String, Object> test = new HashMap<String, Object>();
test.put("statusCode", 200);
test.put("headers", null);
test.put("body", "n10k_website repository uploaded to S3");
test.put("isBase64Encoded", false);
jsonString = mapper.writeValueAsString(test);
}
catch (Exception e) {
int i = 0;
}*/
//return jsonString;
return "{\"isBase64Encoded\":false, \"statusCode\":200, \"headers\":null, \"body\": \"n10k_website repository uploaded to S3\"}";
}
当我从API网关控制台测试API时,这是我得到的响应:
收到回复 . 集成延迟:4337 ms星期一07月08日00:33:45 UTC 2017:转换前的 endpoints 响应正文:“{\”isBase64Encoded \“:false,\”statusCode \“:200,\”headers \“:null,\” body \“:\”n10k_website repository上传到S3 \“}”Mon Aug 07 00:33:45 UTC 2017: endpoints 响应头:{x-amzn-Remapped-Content-Length = 0,x-amzn-RequestId = 0ff74e9d -7b08-11e7-9234-a1a04edc223f,Connection = keep-alive,Content-Length = 121,Date = Mon,07 Aug 2017 00:33:45 GMT,X-Amzn-Trace-Id = root = 1-5987b565-7a66a2fd5fe7a5ee14c22633 ; samples = 0,Content-Type = application / json} Mon Aug 07 00:33:45 UTC 2017:由于配置错误导致执行失败:格式错误的Lambda代理响应Mon Aug 07 00:33:45 UTC 2017:方法已完成,状态为:502
如果我取消选中“使用Lambda代理集成”,一切正常 . 但我想知道为什么我的回答是错误的以及如何解决它 . 谢谢!
1 回答
我想到了 . 我以错误的方式发回了回复 .
响应必须直接作为POJO对象发回,而不是序列化POJO并将其作为String发回 . 这就是我开始工作的方式 .
希望这有助于某人!