为啥我从 Postman 收到此 "message": "Internal server error"
Posted
技术标签:
【中文标题】为啥我从 Postman 收到此 "message": "Internal server error"【英文标题】:Why i am getting this "message": "Internal server error" from Postman为什么我从 Postman 收到此 "message": "Internal server error" 【发布时间】:2020-03-17 11:30:29 【问题描述】:我是 AWS 新手,在 Postman 中使用 API Gateway 运行 Lambda 函数时收到了"message": "Internal server error"
。
我检查了CloudWatchLogs
,日志中没有显示错误。但是邮递员返回"message": "Internal server error"
这个错误。
【问题讨论】:
您不能在 Postman 中运行 Lambda。您在那里运行对特定资源的请求。内部服务器错误假定处理您的请求导致某处的系统错误。它可以是网关或 lambda 本身。查看日志。 感谢您的回复。是的,我检查了日志,它返回Status Code 200
并且数据也插入到数据库中。邮递员的回复是502 Bad gateway
。有没有其他方法可以从邮递员那里获得Status Code 200
的回复?
@DeepakSriram 你能提供你的代码的sn-p吗?没有它,就很难猜出哪里出了问题。
嘿,Deepak 支持您的答案,因为有些卑鄙的人不赞成,在提问时请尝试包含相关代码 sn-ps - 在下面的 bcosta12 答案中添加了评论!欢迎使用 ***!
感谢@bcosta12 的回答,它已正确执行
【参考方案1】:
当您没有返回正确的 API 网关格式时会发生这种情况。
尝试在您的 Lambda 中返回它:
def lambda_handler(event, context):
return
"statusCode": 200,
"body": "'Test': 'Test'",
"headers":
'Content-Type': 'text/html',
【讨论】:
是的,请参阅 ***.com/a/43718963/1175948 获取格式错误的代理响应。【参考方案2】:错误可能是由不正确的引号引起的。
A.在 Postman 测试中产生相同错误的示例:
1. def lambda_handler(event, context):
return
'statusCode': 200,
"body": "one": 1000
2. def lambda_handler(event, context):
return
'statusCode': 200,
"body": ""one": 1000"
B.不产生错误的例子:
3. def lambda_handler(event, context):
return
'statusCode': 200,
"body": "'one': 1000"
4. def lambda_handler(event, context):
return
'statusCode': 200,
"body": '"one": 1000'
所以,在“body”之后使用的引号类型:是这种情况下错误的原因。请注意,虽然 Amazon lambda 控制台不会产生示例 1 的错误,但 Postman 说 "message": "Internal server error"
【讨论】:
【参考方案3】:根据您提供的日志消息,它看起来像来自您的 Lambda 函数的日志。我建议您在 API Gateway 端启用日志记录功能,或者您可以在 API Gateway 控制台上使用测试调用功能。他们都能够帮助您调试您的 API。
以下是可能有助于您诊断问题的常见问题。 1.它没有权限允许API Gateway调用你的Lambda函数。 2. 它被设置为您的 Lambda 函数的 AWS 服务代理,您的 Lambda 函数的响应没有以正确的格式返回响应。
参考:https://forums.aws.amazon.com/thread.jspa?messageID=916452
【讨论】:
以上是关于为啥我从 Postman 收到此 "message": "Internal server error"的主要内容,如果未能解决你的问题,请参考以下文章
谁能告诉我为啥我从 GitLab 收到此“错误:作业失败:退出代码 1”消息?
为啥我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误,而 Postman 却没有?
为啥我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误,而 Postman 却没有?
为啥我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误,而 Postman 却没有?
为啥我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误,而 Postman 却没有?