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

如何从Lambda获取REST API Gateway的路径参数

解决API Gateway GET路径参数无法传递到Lambda的问题

核心原因

你遇到的event为空的问题,本质是API Gateway没有正确配置参数映射,或者集成类型选择错误,导致路径参数没有传递到Lambda函数。

推荐方案:Lambda代理集成(无需手动写映射)

这是当前AWS控制台最简便的配置方式,步骤如下:

  1. 创建带路径参数的资源

    • 进入API Gateway控制台,选择你的API,切换到「资源」页面。
    • 在根资源(/)上点击「创建资源」,填写:
      • 资源名称:比如item
      • 资源路径:{id}(这里的id就是你要接收的路径参数名)
      • 可选:勾选「启用API Gateway CORS」
      • 点击「创建资源」
  2. 创建GET方法并配置Lambda代理集成

    • 选中刚创建的/{id}资源,点击「创建方法」,选择GET后点击确认。
    • 集成类型选择「Lambda函数」,勾选「使用Lambda代理集成」,选择函数所在区域,输入你的Lambda函数名称,点击「保存」,确认自动添加API Gateway调用Lambda的权限。
  3. 部署API

    • 点击控制台顶部的「部署API」,选择一个部署阶段(比如prod),完成部署。
  4. Lambda中获取参数的代码示例
    代理集成模式下,路径参数会被自动封装到event['pathParameters']中:

    import json
    from datetime import datetime
    
    def lambda_handler(event, context):
        # 获取路径参数id
        item_id = event['pathParameters'].get('id')
        current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
        # 示例:将参数存入DynamoDB(需提前配置Lambda的DynamoDB权限)
        # table.put_item(
        #     Item={
        #         "timevalue": current_time,
        #         "eventvalue": json.dumps(event),
        #         "item_id": item_id
        #     }
        # )
    
        return {
            'statusCode': 200,
            'body': json.dumps({
                'success': True,
                'received_id': item_id,
                'timestamp': current_time
            })
        }
    

备选方案:自定义集成(手动配置映射模板)

如果需要更灵活的参数控制,可使用非代理集成,手动配置映射模板:

  1. 创建GET方法(不启用代理)

    • 按照上述步骤创建/{id}资源和GET方法,集成类型选「Lambda函数」,不勾选「使用Lambda代理集成」,关联你的Lambda函数并保存权限。
  2. 配置映射模板

    • 进入该GET方法的「集成请求」设置,找到「映射模板」模块。
    • 点击「添加映射模板」,输入application/json,勾选「当没有模板匹配请求的内容类型时,通过传递请求体绕过模板处理」,点击「保存」。
    • 在模板编辑器中输入以下内容,将路径参数id映射到Lambda的event中:
      {
          "id": "$input.params('id')"
      }
      
  3. 部署API后,Lambda中获取参数
    此时可直接通过event['id']获取路径参数:

    import json
    from datetime import datetime
    
    def lambda_handler(event, context):
        item_id = event.get('id')
        # 后续业务逻辑...
    

关键注意事项

  • 每次修改集成配置后,必须重新部署API才能生效。
  • 确认Lambda的执行角色权限:需允许API Gateway调用该Lambda函数(创建方法时控制台会自动添加权限,若手动配置需检查IAM策略)。
  • 测试时使用部署后的完整URL,格式为:https://[API_ID].execute-api.[区域].amazonaws.com/[阶段]/[资源路径]/[参数值],例如https://abc123.execute-api.us-east-1.amazonaws.com/prod/item/456。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:04:56