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

无法更新AWS Lambda函数:新增请求参数不生效求助

AWS Lambda更新后未生效,新增参数仍报错的排查方案

问题背景

原本API仅接受如下格式请求:

https://yh74mgrokc.execute-api.us-west-1.amazonaws.com/dev/ga/answer/qn_type?tag=alexa

修改Lambda函数的校验Schema,添加from和to到允许参数列表:

exports.getAnswerQnTypeSchema = [
    query('tag')
        .exists()
        .withMessage('tag is required'),
    query().custom((query) => {

        const allowedKeys = [
            "id",
            "name",
            "tag",
            "from",
            "to"
        ];
        for (const key of Object.keys(query)) {
            if (!allowedKeys.includes(key)) {
                throw new Error(`Unknown property: ${key} please resolve`,query);
            }
        }

        return true;
    })
];

重新部署后,发送带from和to的请求:

https://yh74mgrokc.execute-api.us-west-1.amazonaws.com/dev/ga/answer/qn_type?tag=alexa&from=2020-05-29&to=2021-05-29

仍收到旧版本报错:Unknown property: from please resolve。

排查步骤

1. 确认Lambda代码是否真的更新

  • 登录AWS Lambda控制台,找到目标函数,进入代码标签,直接查看getAnswerQnTypeSchema的代码,确认allowedKeys中包含from和to。
  • 切换到版本和别名标签,检查正在使用的别名(如dev)是否指向最新发布的函数版本。如果用CLI部署,确认部署命令无报错,且指定的函数和版本正确。

2. 重新部署API Gateway阶段

API Gateway不会自动同步Lambda的更新,必须手动重新部署对应阶段:

  • 进入AWS API Gateway控制台,找到目标API,点击部署API,选择对应的阶段(如dev),完成重新部署。
  • 检查集成请求配置,确认API Gateway指向的是Lambda的别名(而非固定旧版本),确保后续请求会转发到最新的Lambda代码。

3. 检查是否存在其他校验逻辑

  • 排查函数代码中是否有其他参数校验逻辑(如路由中间件、前置过滤器),这些逻辑可能未同步更新,导致from/to被拦截。
  • 确认当前请求的路由确实引用了更新后的getAnswerQnTypeSchema,避免因Schema名称拼写错误、路由配置引用旧Schema导致问题。

4. 清除缓存

  • 客户端(浏览器/工具)可能缓存了旧响应,使用无痕模式或清除缓存后重新测试请求。
  • 如果API Gateway阶段开启了缓存,进入阶段设置页面,清除缓存或暂时关闭缓存后再测试。

5. 查看CloudWatch日志定位问题

  • 进入Lambda函数的监控标签,打开CloudWatch日志组,查看对应请求的日志输出:
    • 可以在代码中临时添加console.log('Allowed keys:', allowedKeys),确认运行时的参数允许列表是否正确。
    • 通过日志确认执行的代码版本是否为更新后的版本,排除部署未生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:11:03