为什么我从邮递员那里得到这个 {"message": "Internal server error" }
Why i am getting this {"message": "Internal server error" } from Postman
我是 AWS 的新手,我正在 {"message": "Internal server error"}
而 运行 Lambda 函数与 API Postman 中的网关。
我检查了 CloudWatchLogs
,日志中没有显示错误。但是 Postman 返回 {"message": "Internal server error"}
这个错误。
如果您没有return正确的API网关格式,就会发生这种情况。
尝试在您的 Lambda 中return:
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": "{'Test': 'Test'}",
"headers": {
'Content-Type': 'text/html',
}
}
根据您提供的日志消息,它看起来像是来自您的 Lambda 函数的日志。我建议您在 API 网关端启用日志记录功能,或者您可以在 API 网关控制台上使用测试调用功能。他们都能够帮助您调试 API.
以下是可能能够帮助您诊断问题的常见问题。
1. 它没有允许 API 网关调用您的 Lambda 函数的正确权限。
2. 它被设置为您的 Lambda 函数的 AWS 服务代理,您的 Lambda 函数的响应没有 return 正确格式的响应。
参考:https://forums.aws.amazon.com/thread.jspa?messageID=916452
错误可能是引号不正确引起的。
一个。在 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}"
}
乙。不产生错误的示例:
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 的错误,但邮递员说 { "message": "Internal server error" }
通过将 isBase64EncodedFlag 添加到我的 lambda 响应解决了这个问题
results = {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(res),
"isBase64Encoded": False
}
我是 AWS 的新手,我正在 {"message": "Internal server error"}
而 运行 Lambda 函数与 API Postman 中的网关。
我检查了 CloudWatchLogs
,日志中没有显示错误。但是 Postman 返回 {"message": "Internal server error"}
这个错误。
如果您没有return正确的API网关格式,就会发生这种情况。
尝试在您的 Lambda 中return:
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": "{'Test': 'Test'}",
"headers": {
'Content-Type': 'text/html',
}
}
根据您提供的日志消息,它看起来像是来自您的 Lambda 函数的日志。我建议您在 API 网关端启用日志记录功能,或者您可以在 API 网关控制台上使用测试调用功能。他们都能够帮助您调试 API.
以下是可能能够帮助您诊断问题的常见问题。 1. 它没有允许 API 网关调用您的 Lambda 函数的正确权限。 2. 它被设置为您的 Lambda 函数的 AWS 服务代理,您的 Lambda 函数的响应没有 return 正确格式的响应。
参考:https://forums.aws.amazon.com/thread.jspa?messageID=916452
错误可能是引号不正确引起的。
一个。在 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}"
}
乙。不产生错误的示例:
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 的错误,但邮递员说 { "message": "Internal server error" }
通过将 isBase64EncodedFlag 添加到我的 lambda 响应解决了这个问题
results = {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(res),
"isBase64Encoded": False
}