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

AWS Lambda发生错误时如何返回自定义状态码与响应体?

问题原因

你的代码存在两个关键错误,导致API Gateway始终返回默认的200状态码:

  • 错误1:将包含statusCode、headers、body的完整响应字典整体做了json.dumps序列化后返回。这种情况下Lambda会把序列化后的整段字符串当成普通响应体处理,不会解析其中的statusCode字段,API Gateway读取不到自定义状态码,就会默认返回200 OK。
  • 错误2:Lambda代理集成模式要求响应结构里的body字段必须是字符串类型,你当前直接把Python字典赋值给body,即使修正了序列化逻辑,也会触发响应格式校验错误。
修复方案

不要序列化整个响应对象,只需要单独把body内的内容序列化为JSON字符串,直接返回结构化的响应字典即可,参考代码:

import json

def lambda_handler(event, context):
    try:
        # 此处编写你的业务逻辑
        pass
    except Exception as e:
        return {
            'statusCode': 404,
            'headers': {
                'Content-Type': 'application/json',
            },
            'body': json.dumps({
                "error": str(e)
            })
        }

补充说明:如果你使用的是Lambda非代理集成模式,还需要提前在API Gateway控制台的「方法响应」「集成响应」配置中,提前定义好对应404状态码的映射规则,否则依然无法正常返回自定义状态码。日常开发中绝大多数场景都会使用代理集成模式,按上述代码写法即可正常返回自定义状态码与响应体。

内容的提问来源于stack exchange,提问作者Ícaro Gabriel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:18:19