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

使用Serverless框架部署Python版AWS Lambda时,获取路径参数{foo}失败的问题咨询

解决AWS Lambda路径参数获取问题

嘿,我正好碰到过这个问题!你的serverless.yml配置其实是对的,问题出在Lambda handler里获取参数的方式上——AWS API Gateway并不会把路径参数直接放到event的顶级键里,而是存在pathParameters这个嵌套对象里。

问题根源

当你通过API Gateway发起GET /my_function/bar请求时,Lambda收到的event结构大概是这样的:

{
  "pathParameters": {
    "foo": "bar"
  },
  // 其他API Gateway自带的字段...
}

而你当前的代码直接取event['foo'],自然会找不到这个键啦。

修改handler代码

把你的handler改成这样就能正确获取参数了,还能加个容错处理避免参数缺失的报错:

def sitemap_entries(event, context):
    # 先获取路径参数对象,默认空字典防止KeyError
    path_params = event.get('pathParameters', {})
    # 取出foo参数
    foo_value = path_params.get('foo')
    
    # 如果参数缺失,返回400错误
    if not foo_value:
        return {
            'statusCode': 400,
            'body': '请求路径中缺少foo参数'
        }
    
    s = MyNiceClass(foo_value)
    # 你的后续业务逻辑...

本地模拟API Gateway请求

之前你本地调用用--data '{"foo": "bar"}'能成功,是因为手动把参数放到了event根节点,和API Gateway的实际传递结构不一样。如果要在本地模拟真实的请求结构,可以用这个命令:

serverless invoke local --function my_function --data '{
  "pathParameters": {
    "foo": "bar"
  }
}'

这样修改后,部署到AWS上就能正常获取路径参数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:04:11