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

使用AWS CDK部署子文件夹Lambda函数时遇文件解析错误

解决AWS CDK部署多Lambda函数时的锁文件缺失与打包路径错误问题
  • 检查Lambda代码资产的路径配置
    使用NodejsFunction创建Lambda时,必须明确指定子文件夹作为项目根目录,否则CDK会默认从全局项目根目录查找依赖文件。以auth函数为例:

    new NodejsFunction(this, 'AuthLambda', {
      entry: path.join(__dirname, '../src/auth/index.ts'),
      projectRoot: path.join(__dirname, '../src/auth'), // 必须指定子文件夹为项目根
      // 其他配置(如handler、runtime等)
    });
    

    之前的错误就是因为CDK去全局根目录找../src/auth/package-lock.json,而非子文件夹内部的锁文件。

  • 修正Docker打包的路径配置
    Docker打包阶段找不到/asset-input/src/auth/index.ts,是因为COPY指令的路径嵌套错误。调整Dockerfile如下:

    FROM public.ecr.aws/lambda/nodejs:20
    WORKDIR /asset-input
    # 先复制依赖文件到工作目录
    COPY src/auth/package*.json ./
    RUN npm install --production
    # 再复制auth文件夹下的所有代码到工作目录
    COPY src/auth/ ./
    CMD ["index.handler"]
    

    这样index.ts会直接放在/asset-input下,符合Lambda的资产加载路径要求。

  • 验证Github Action的工作目录
    在Github Action脚本中添加步骤确认当前工作目录,避免相对路径引用错误:

    - name: 确认当前工作目录
      run: pwd
    

    确保执行cdk deploy的目录与代码结构匹配,不要随意切换目录导致路径偏移。

  • 清理CDK缓存
    残留的CDK资产缓存可能引发路径异常,执行以下命令清理后重新部署:

    cdk clean
    rm -rf .cdk.staging
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:43:15