我是AWS新手,在Postman中使用API Gateway运行Lambda函数时遇到{"message": "Internal server error"}
。
我已经检查过CloudWatchLogs
,日志中没有显示错误。但是邮递员返回了{"message": "Internal server error"}
这个错误。
答案 0 :(得分:5)
当您没有返回正确的API网关格式时,就会发生这种情况。
尝试在您的Lambda中返回它:
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": "{'Test': 'Test'}",
"headers": {
'Content-Type': 'text/html',
}
}
答案 1 :(得分:2)
根据您提供的日志消息,它看起来像Lambda函数中的日志。我建议您在API网关端启用日志记录功能,或者可以在API网关控制台上使用测试调用功能。他们俩都可以帮助您调试API。
以下是常见问题,可以帮助您诊断问题。 1.没有权限允许API Gateway调用您的Lambda函数。 2.将其设置为Lambda函数的AWS Service Proxy,您的Lambda函数的响应不会以正确的格式返回响应。
参考:https://forums.aws.amazon.com/thread.jspa?messageID=916452
答案 2 :(得分:0)
该错误可能是由不正确的引号引起的。
A。在邮递员测试中产生相同错误的示例:
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" }