AWS CDK如何在本地运行API Gateway与Lambda进行开发测试
问题解答
1. 你此前的操作不是本地测试CDK构建应用的官方标准方案
普通版本SAM CLI没有原生适配CDK项目,手动执行cdk synth导出template.yml的方式属于非标准变通方案,官方针对CDK+SAM本地测试的指定方案是使用专门适配CDK的预览版工具。
2. 报错根因
使用普通版SAM时出现模块找不到的错误,核心原因是CDK执行cdk synth生成的模板中,Lambda的代码资产路径指向的是CDK打包生成的哈希命名临时资产目录,而非你本地的functions源码目录。手动导出的template.yml保留了该临时路径,SAM启动容器时挂载的是不存在的临时路径目录,导致容器内找不到test.js模块,抛出Runtime.ImportModuleError错误,最终Lambda返回异常响应,API Gateway报错。
3. 官方规范操作方式
安装适配CDK的公开预览版SAM工具sam-beta-cdk,无需手动执行cdk synth生成模板文件,直接在项目根目录执行sam-beta-cdk start-api即可自动完成资产映射、本地API启动,正常访问测试端点。
该方案无需额外修改配置,能正确识别CDK项目中的路由、Lambda配置,和线上部署的行为保持一致,同时支持热重载等本地调试特性,适合开发阶段快速验证接口逻辑。
如果暂时不想使用预览版工具,也可以在手动导出template.yml后,将所有Lambda函数的CodeUri字段值修改为本地对应的源码目录路径(你的场景可改为./functions),再执行sam local start-api也能正常运行,但该方式需要每次synth后手动修改配置,效率较低。
内容的提问来源于stack exchange,提问作者Roger Heathcote
相关产品推荐
相关产品推荐

