You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API Gateway搭配Python Lambda是否必须返回JSON字符串格式响应体?

问题:API Gateway搭配Python Lambda返回502错误的原因?

我正在使用API Gateway搭配Python Lambda,编写的openapi.yml配置如下:

responses:
    "200":
      description: "200 response"
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                table_id:
                  type: integer
                  format: int64
                table_name:
                  type: string

我的Python Lambda返回代码如下:

response = [{
  "table_id": 2323,
  "table_name":"test_table_1"
 },
 {
  "table_id": 1234,
  "table_name":"test_table_2"
 }]

return { 
           "statusCode": 200,
           "headers": {'Content-Type': 'application/json'},
           "body": response
           };

运行后出现502错误:执行失败,配置错误,Lambda代理响应格式错误。但检查Lambda响应与openapi.yml配置后未发现问题。不过当我将代码改为"body": json.dumps(response)时,就能正常运行。

请问使用Lambda时是否必须将响应对象转为字符串,还是我遗漏了某些配置?


解答

当使用API Gateway的Lambda代理集成模式时,Lambda返回的body字段必须是字符串格式,这是硬性要求,并非你遗漏了配置。

原因在于:API Gateway的Lambda代理集成对响应格式有严格规范,其中body字段必须是可被直接传输的字符串类型(比如JSON字符串、纯文本等)。你直接传入Python原生的列表/字典对象时,API Gateway无法识别和处理这个Python对象,会导致解析失败,进而返回502错误。

你的OpenAPI配置没有问题,它定义的是API Gateway最终返回给客户端的响应结构;而Lambda返回的是给API Gateway的代理响应,两者层级不同——Lambda的body是API Gateway要转发(或已完成序列化)的内容,当你用json.dumps()把列表转为JSON字符串后,API Gateway就能正确识别该内容,将其作为响应体转发给客户端,同时匹配你定义的OpenAPI schema。


内容的提问来源于stack exchange,提问作者Ben P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:32:36