我有一个使用 Lambda (nodejs) 和 API 网关托管的 API。我正在使用无服务器来部署。
总体来说一切都很好,但是当我今天处理特定功能时,我在访问端点时开始收到 HTTP 500 错误。然而,虽然端点仍然有 API 网关访问日志,但没有受到攻击的 lambda 函数的 Cloudwatch 日志。我能够验证授权者是否已成功命中,并且未返回任何问题(如果是,则为 401)。使用 CLI 工具从命令行调用该函数后,500 错误消失,我能够再次成功访问端点。
以前有人遇到过这种情况吗?如果我错过了调试步骤,我真的很想知道。真正令人担忧的是,我的 API 可能会生成 500 个错误,但没有书面记录来帮助我了解发生了什么。
您可以检查您的角色和权限,此链接可以帮助您https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-lambda-stage-variable-500/
您还可以使用 X-ray 进一步调试:https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html
我遇到了完全相同的问题,即授权程序成功运行,但请求返回 500 错误,而没有实际命中目标端点 lambda。经过一番尝试和错误后,我发现它的发生是由于授权者生成的 IAM 策略的“上下文”部分包含基于数组和对象的属性。一旦我用字符串值替换了上下文中的数组和对象属性,它就像一个魅力。