当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda API网关“消息”:“内部服务器错误”(502坏网关)

柏麒
2023-03-14

我创建了一个简单的AWS Lambda函数,使用python 3.6添加两个数字。它读取val1

Lambda函数

import json
def lambda_handler(event, context):
    # TODO implement
    val1 = int(event['val1'])
    val2 = int(event['val2'])
    val3 = val1 + val2
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps(val3)
    }

JSON主体

{
    "val1": "3",
    "val2": "5"
}

共有2个答案

邵文乐
2023-03-14

我在这里结束时出现了相同的错误,只是我使用的是无服务器和节点。我返回了一个HTTP响应,但没有在主体上使用stringify。如下面的坏例子所示:

坏的:

return {
            statusCode,
            body: body.message,
            headers: {
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Allow-Credentials": true,
            },
        };
    };
}

好:

return {
            statusCode,
            body: JSON.stringify(body.message),
            headers: {
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Allow-Credentials": true,
            },
        };
    };
}

我希望这能帮助其他可能遇到502错误的人。

东方志尚
2023-03-14

发生此错误的原因是事件对象(python字典)的行为。在lambda控制台中测试lambda函数时,JSON主体将直接传递给事件对象。但当您通过API网关进行尝试时,不仅事件对象是请求负载,而且body属性也设置为字符串。

例如,您的JSON主体将是这样的事件对象

body: "{\n    \"val1\": \"3\",\n    \"val2\": \"5\"\n}"

要解决此错误,请尝试json.loads()方法将正文字符串转换为json。

import json
def lambda_handler(event, context):
    # TODO implement
    try:
        event = json.loads(event['body'])
        val1 = int(event['val1'])
        val2 = int(event['val2'])
        val3 = val1 + val2
    except:
        val3 = 'request error'
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps(val3)
    }
 类似资料:
  • 在通过eclipse上传应用程序后,我收到了502坏网关错误,我不明白为什么会发生这种情况? 我通过AWS弹性豆茎控制台创建了一个示例应用程序。然后我在eclipse中加载了服务器。之后我发布了它,并在EB控制台中获得了“环境更新成功完成”的消息。然而,当我转到网址时,我得到一个502坏网关错误。我看了日志,看看出了什么问题,但我唯一发现的是 连接到上游时失败(111:连接被拒绝),客户端:172

  • 使用Node.js创建Lambda Hello world函数,并为Get调用创建API网关触发器,尝试使用URL访问Lambda函数,出现以下错误。 消息:"内部服务器错误"。 (AWS非常新)

  • 我的nginx.conf文件是这样的: 现在,在打开一些URL时,它抛出了502个坏网关,但对其他URL则没有。我犯的错误。日志为: 2019/01/10 23:53:39[错误]12139#12139:*5 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:127.0。0.1,服务器:localhost,请求:“GET/wordpress/HTTP/2.0”,上游:fas

  • 我上传一个图像到s3,通过lambda,和一切工作正常,没有错误,但从API网关的响应是500内部服务器错误。 我按照以下教程配置了我的api网关:使用Amazon API网关集成API的二进制支持。 My lambda接收Base64图像,对其进行解码并成功上载到s3。 这是我的lambda代码: 这就是我收到的:{“消息”:“内部服务器错误”},状态代码为500。 Obs:我没有使用lambd

  • 单击上面显示的网关的实例URL,我会得到以下错误: 502坏网关:注册的endpoint无法处理请求 相应的登录网关如下所示: 有人能提供建议或意见吗? 多谢!

  • 我一个多星期都找不到解决办法。在dev服务器上一切正常,但在生产环境中则不然。我没有力量,我呼吁各位同事:) 我在Socket上使用Laravel echo服务器。io使用CloudFlare。尝试连接时,我收到一个错误:WebSocketError:收到意外状态代码(502坏网关) Ubuntu 16.04。7 LTS,Laravel Echo服务器:1.6。1,NodeJs:v12。19 拉威