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

求Python编写的接收路径参数的AWS API Gateway Lambda函数示例

Python版AWS Lambda获取API Gateway路径参数示例

你提供的SAM模板配置是正确的,路径参数{id}已经在API Gateway中定义。之所以在Lambda的event对象中找不到id,是因为不同类型的API Gateway(REST API/HTTP API)对应的event结构不同,以下是两种场景下的正确取值方式:

1. 针对REST API(传统API Gateway)

REST API的路径参数会被封装在event['pathParameters']对象中,直接通过键名即可获取:

def lambda_handler(event, context):
    # 安全获取路径参数id,避免KeyError
    job_id = event.get('pathParameters', {}).get('id')
    
    if not job_id:
        return {
            'statusCode': 400,
            'body': '请求缺少必要的路径参数id'
        }
    
    # 这里写你的业务逻辑,比如根据id查询任务详情
    return {
        'statusCode': 200,
        'body': f'成功获取任务ID:{job_id}'
    }

2. 针对HTTP API(新型API Gateway)

如果使用的是HTTP API(Payload Format Version 2.0),路径参数同样在event['pathParameters']中,但部分旧版本或特殊配置下可能需要从requestContext中读取,保险写法如下:

def lambda_handler(event, context):
    # 兼容HTTP API的两种参数位置
    path_params = event.get('pathParameters', {}) or event.get('requestContext', {}).get('http', {}).get('pathParameters', {})
    job_id = path_params.get('id')
    
    if not job_id:
        return {
            'statusCode': 400,
            'body': '请求缺少必要的路径参数id'
        }
    
    return {
        'statusCode': 200,
        'body': f'HTTP API下成功获取任务ID:{job_id}'
    }

验证小技巧

可以在Lambda函数中先打印整个event对象,查看实际的参数结构:

def lambda_handler(event, context):
    print("完整event对象:", event)
    # 后续逻辑...

通过CloudWatch日志查看打印结果,就能明确参数的具体位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:32:17