使用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
相关产品推荐
相关产品推荐

