我正在尝试部署一个简单的Slack lambda api,该API使用@slack/client
库从特定通道中删除成员和固定消息。我遇到的问题是函数执行没有问题,并且它正在毫无问题地删除通道成员,但我的 Lambda 函数不断返回:
HTTP/1.1 502 Bad Gateway
...
X-Cache: Error from cloudfront
...
{
"message": "Internal server error"
}
作为响应正文。当我使用sls logs -f api
检查日志时,我也没有看到任何错误。我看到我的函数的控制台.log已成功执行。
我serverless.yml
如下:
provider:
name: aws
runtime: nodejs10.x
profile: serverless
functions:
api:
handler: handler.api
timeout: 30
events:
- http:
method: POST
path: clean
我的 api 代码,我已经删除了不必要的功能代码,因为它们正在工作,是:
module.exports.api = async (event, context, callback) => {
let channel = JSON.parse(event.body).ctf
let id = await findChannelId(channel)
removeMembersFromChannel(id[0]).then(() => {
removePinsFromChannel(id[0]).then(() => {
callback(null, {
statusCode: 200,
body: JSON.stringify({
message: `Cleaned ${channel} ${id}`,
}, null, 2),
})
})
})
};
我尝试过的事情:
- 返回响应而不是使用
callback
- 使用承诺和异步等待
- 使用
sls invoke local
在本地测试函数 - 我的大部分搜索都显示这可能是权限问题,但所有参考都是针对 S3 使用的,这是我没有使用的。
问题
- 为什么会出现此错误,以及如何解决此问题?
- 在处理函数中引用此内容后,我正在使用
JSON.stringify
.使用serverless-framework
,如何避免使用 Lambda 代理集成?
请添加控制台.log,以便通过 cloudwatch 进行详细日志记录并使用 X 射线。Cloudfront 的一些典型问题: - 大量时间传播到边缘站点(也许您需要重新创建 CDN) - 来自位于调用区域中的lambda@edge日志