我只是从Serverless开始,还有其他有趣的事情-因此,如果我在某种程度上听起来很基础,请原谅我。
我通过以下链接开始学习本教程:part 1,part 2。
在成功安装和配置完东西之后,到了必须调用curl请求以测试addRating
函数的部分,而不是所需的输出时,我得到了iths错误:
HTTP/2 502
content-type: application/json
content-length: 36
date: Thu, 21 Jun 2018 09:59:35 GMT
x-amzn-requestid: cd0xxx
x-amz-apigw-id: I0xxx
x-cache: Error from cloudfront
via: 1.1 c438xxx.cloudfront.net (CloudFront)
x-amz-cf-id: MFxxx==
我尝试在网上寻找答案,但没有发现任何特别的问题。 一些信息表明我需要设置我的API网关,但是另一方面,我看到它在本教程中运行良好,而未配置任何api网关。 这里可能是什么问题,什么是最好的解决方法?
在Michael的帮助下,我设法找到了在第一次项目部署时发送到AWS的API网关。原来位置与API中的位置不同,导致它在列表中不可见。
运行测试,将实际问题命名为Malformed Lambda proxy response
。研究表明,此问题是由于功能的错误响应而发生的。我已经更新了回复,使其看起来像这样:
callback(null, {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({ averageRating: average }),
isBase64Encoded: false
})
为了更好地匹配Amazon docs。但是-问题仍然存在。
此外,尽管回调看起来像这样,测试“ hello”功能仍然可以正常工作:
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}),
};
callback(null, response);
更新:
将回调设置为context.succeed(response);
会导致同样的问题