如何在子目录中搭建Python版AWS Lambda并解决导入与依赖安装问题
子目录部署Python AWS Lambda SAM 依赖安装失败解决方案
1. 修正template.yml配置
在你的AWS::Serverless::Function资源定义中,添加如下配置,显式指定依赖文件路径和构建规则:
YourFunctionName: Type: AWS::Serverless::Function Properties: CodeUri: ./ # 因template.yml位于src目录下,当前路径对应src根目录 Handler: lambda_handler.lambda_handler # 对应主处理文件和入口函数名 Runtime: python3.9 # 替换为实际使用的Python版本 # 其他原有配置(内存、超时、角色等)保持不变 Metadata: AWS::Lambda::BuildMethod: python3.9 # 和上述Runtime版本保持一致 AWS::Lambda::BuildProperties: RequirementsFile: ./requirements.txt # 显式指定requirements.txt的相对路径
2. 调整执行命令参数
所有SAM命令都需要显式指定模板文件路径,避免SAM从根目录查找配置:
- 本地构建命令:
sam build --template-file src/template.yml --no-cached - 本地测试命令:
sam local invoke --template-file src/template.yml - SAM Accelerate同步命令:
sam sync --template-file src/template.yml --stack-name 你的栈名称 --accelerate
3. 兜底方案
如果上述配置仍不生效,可以手动将依赖安装到src目录后再执行构建,该方法不需要修改SAM配置:
- 进入src目录执行命令:
pip install -r requirements.txt -t ./ - 将安装生成的依赖文件夹添加到
.gitignore中,避免提交到代码仓库
注意:该方法仅作为临时兜底,优先使用前两种配置方案,更符合SAM的规范开发流程
内容的提问来源于stack exchange,提问作者MapLion
相关产品推荐
相关产品推荐

