为什么我从邮递员那里收到此{“ message”:“内部服务器错误”},

时间:2019-11-21 13:48:09

标签: amazon-web-services aws-lambda aws-api-gateway amazon-cloudwatch amazon-cloudwatchlogs

我是AWS新手,在Postman中使用API​​ Gateway运行Lambda函数时遇到{"message": "Internal server error"}

我已经检查过CloudWatchLogs,日志中没有显示错误。但是邮递员返回了{"message": "Internal server error"}这个错误。

3 个答案:

答案 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" }