消息:尝试访问aws网关api时出现"内部服务器错误"

use*_*308 18 aws-lambda aws-api-gateway

使用Node.js创建了Lambda Hello world函数,并为Get调用创建了API GateWay触发器,尝试使用URL访问Lambda函数,得到以下错误.

消息:"内部服务器错误".

(AWS新手)

ljm*_*cic 30

您需要statusCode在执行Lambda函数后传递.如果您未通过它,API网关将502 Bad Gateway默认触发错误.

message = {
   'message': 'Execution started successfully!'
}
return {
    'statusCode': 200,
    'headers': {'Content-Type': 'application/json'},
    'body': json.dumps(message)
}
Run Code Online (Sandbox Code Playgroud)

编辑:此示例适用于Python.对于node.js,您只需要处理回调,消息基本相同.

callback(null, {
    statusCode: 200,
    body: JSON.stringify(message),
    headers: {'Content-Type': 'application/json'}
});
Run Code Online (Sandbox Code Playgroud)

  • 我最终遇到了同样的问题,但从节点的角度来看。在将正文传递给 APIGW 之前,我需要对其进行“JSON.stringify(message)”。 (3认同)
  • 检查评论 - https://github.com/aws-samples/aws-serverless-workshops/blob/master/WebApplication/3_ServerlessBackend/requestUnicorn.js 回调必须有格式 (2认同)
  • 谢谢你,我错误地将属性设置为“状态”。希望这对其他人有帮助。 (2认同)

小智 13

要通过 api 网关的 lambda 函数访问 dynamodb,需要:

  1. 在 AWS 控制台中创建一个有权访问 dynamodb 操作的角色。

  2. 创建一个 lambda 函数并将上面创建的角色分配给您的 lambda 函数。

  3. 在 AWS 管理控制台中从 API 网关创建一个 api,并允许它访问您的 lambda 函数。

  4. 为了让你的 api 显示正确的响应,lambda 函数的返回类型应该是特定的格式,即:

return {
  "statusCode": 200,
  "body": json.dumps(your response)
}
Run Code Online (Sandbox Code Playgroud)


Tob*_*obi 8

上面已经解释过,但我的问题是这对我来说只需调用 lambda:

exports.handler = async (event) => {
    return "gugus"
};
Run Code Online (Sandbox Code Playgroud)

所以 lambda 中的所有测试都很好。日志看起来也很好。只是 API 响应不太好。

要使用 API 网关调用它,需要如下所示:

exports.handler = async (event) => {
...
    var res ={
        "statusCode": 200,
        "headers": {
            "Content-Type": "*/*"
        }
    };
    res.body = "gugus";
    return res;
};
Run Code Online (Sandbox Code Playgroud)


Joe*_* M. 7

请务必将正文作为响应中的字符串传递。如果它是一个对象,它将失败并给出您看到的错误。请参阅此处了解更多信息 - http://www.awslessons.com/2017/lambda-api-gateway-internal-server-error/


ssu*_*ski 5

不要伪造在AWS API Gateway下部署API。没有它,改变就行不通。

在此处输入图片说明

  • 工作完美。不知道为什么他们没有将其包含在任何文档中。 (3认同)
  • 由于我的方法执行测试正在运行,令人沮丧的是,这就是答案,亚马逊可能会让您需要部署的情况变得更加明显 (3认同)

Jac*_*AWS 0

此错误表明 API 配置存在问题。如果启用 CloudWatch Logs,您可以看到更多信息:https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/