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

AWS Lambda无法读取API Gateway测试事件,该排查哪些内容?

排查AWS API Gateway触发Lambda时无法获取event["task"]的问题

核心原因

API Gateway传递给Lambda的event结构和Lambda控制台直接测试的默认结构完全不同,这是导致你拿不到task的主要原因,以下是具体检查和解决方向:

  • 检查API Gateway集成请求的映射模板
    如果是POST方法,API Gateway默认不会把请求体的JSON直接映射到Lambda的event根节点。需要进入API Gateway的对应方法→集成请求→映射模板,添加application/json类型的模板,内容设置为$input.json('$'),这样请求体的JSON会直接作为event传入Lambda,和你在控制台测试的结构一致。

  • 打印event日志排查实际结构
    在Lambda代码里添加一行打印event的代码,把整个event输出到CloudWatch日志:

    print(f"Received event: {event}")
    

    通过API Gateway测试后,去CloudWatch的Lambda日志组查看实际的event结构,就能清楚task字段的位置。比如常见的情况:

    • 如果是Lambda代理集成,POST的JSON会被放在event['body']字段里,且是字符串格式,需要用json.loads(event['body'])解析后才能拿到task;
    • 如果是GET方法,参数会在event['queryStringParameters']字典里。
  • 确认API Gateway的集成类型
    区分是Lambda代理集成还是自定义集成:

    • 代理集成的event结构包含requestContext、body、headers等多个字段,请求体需要从body字段解析;
    • 自定义集成需要手动配置映射模板来控制传入Lambda的event结构。
  • 检查API Gateway测试的请求格式

    • POST方法测试时,要把JSON内容放在「请求体」区域,不要放在查询字符串;
    • GET方法测试时,需要把task=returnID这类参数添加到查询字符串中。

适配多场景的示例代码

修改Lambda代码,兼容控制台测试、API Gateway代理集成POST/GET的情况:

import json

def lambda_handler(event, context):
    print(f"Received event: {event}")
    try:
        # 处理Lambda代理集成的POST请求
        if 'body' in event:
            request_body = json.loads(event['body'])
            task = request_body["task"]
        # 处理GET查询字符串参数
        elif 'queryStringParameters' in event and event['queryStringParameters']:
            task = event['queryStringParameters']["task"]
        # 处理Lambda控制台直接测试的情况
        else:
            task = event["task"]
    except KeyError:
        return {
            'statusCode': 400,
            'body': json.dumps('Could not find the requested task.')
        }
    
    # 这里编写你的业务逻辑
    return {
        'statusCode': 200,
        'body': json.dumps(f"Task '{task}' received successfully.")
    }

内容的提问来源于stack exchange,提问作者Warren Eckels

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:55:32