我有一个简单的lambda,我正在通过具有Lambda代理集成的API网关进行操作。
这是我的lambda代码
exports.handler = main;
function main(event, context, callback) {
console.log("This will get s3 files")
//return "Succeed"
var responseText = {
message : "Succeeded"
}
return done(200, JSON.stringify(responseText), 'application/json', callback)
}
function done(statusCode, body, contentType, lambdaCallback, isBase64Encoded = false) {
lambdaCallback(null, {
statusCode: statusCode,
isBase64Encoded: isBase64Encoded,
body: body,
headers: {
'Content-Type': contentType
}
});
}
使用API Gateway命中时,它将引发内部服务器错误。 api网关登录cloudwatch的样子-
转换前的端点响应主体:[二进制数据] 端点响应标头:{X-Amz-Executed-Version = 2,x-amzn-Remapped-Content-Length = 0,连接=保持活动状态,x-amzn-RequestId = 8d332243-7b3d-11e8-afe1-c936514725a3,内容-Length = 120,Date = Fri,2018年6月29日格林尼治标准时间,X-Amzn-Trace-Id = root = 1-5b358e4c-623f1d6069f1dc0c3c25dda4; sampled = 0,Content-Type = application / json} 由于配置错误,执行失败:无法通过base64解码正文。
如果我通过控制台测试调用lambda,则会得到正确的响应-
Response:
{
"statusCode": 200,
"isBase64Encoded": false,
"body": "{\"message\":\"Succeeded\"}",
"headers": {
"Content-Type": "application/json"
}
}