AWS Amplify项目中Python Lambda共享自定义模块的实现方案
在AWS Amplify项目中提取Python Lambda通用代码为内部模块的方法
方法一:项目级共享目录 + Amplify构建配置
这是最简便的内部共享方式,无需依赖额外AWS服务,完全在Amplify项目内管理:
- 创建共享模块目录
在Amplify项目根目录下新建shared/python目录,将通用代码放入该目录,例如:
# shared/python/common_utils.py import json def format_response(status_code, body): return { 'statusCode': status_code, 'headers': {'Content-Type': 'application/json'}, 'body': json.dumps(body) }
- 修改Lambda构建配置
对每个需要使用共享模块的Lambda,编辑其amplify/backend/function/<Lambda名称>/build.yml(无则新建),添加复制共享模块的预构建命令:
version: 1 frontend: phases: preBuild: commands: - mkdir -p src/shared - cp -r ../../../../shared/python/* src/shared/ artifacts: baseDirectory: src files: - '**/*'
注意路径需根据实际项目结构调整,确保将共享模块复制到Lambda的src目录下。
- 在Lambda中导入使用
Lambda代码里直接导入共享模块:
from shared.common_utils import format_response def handler(event, context): return format_response(200, {'message': '操作成功'})
方法二:结合AWS Lambda层(Layers)
如果通用代码需要跨项目复用,或希望统一管理依赖,可使用Lambda层:
- 创建Lambda层
通过Amplify CLI创建层:
amplify add function
选择「Lambda layer」,然后将共享代码放入层目录的opt/python下(Lambda层Python代码的标准路径),例如amplify/backend/function/CommonLayer/opt/python/common_utils.py。
- 部署层
执行部署命令:
amplify push
- 关联Lambda与层
- 方式一:在Amplify控制台找到目标Lambda,进入「层」配置页面添加已创建的层。
- 方式二:编辑Lambda的
amplify/backend/function/<Lambda名称>/function.json,在layers数组中添加层的ARN。
- 导入使用共享模块
Lambda代码可直接导入,无需额外路径处理:
from common_utils import format_response def handler(event, context): return format_response(200, {'message': '操作成功'})
注意事项
- 若共享模块依赖第三方库,要么在每个Lambda的
requirements.txt中声明,要么将依赖打包进Lambda层的opt/python目录。 - 使用构建配置复制模块时,需验证路径正确性,避免构建失败。
- 更新Lambda层代码后,需重新部署层,关联的Lambda会自动加载最新版本(若配置为使用最新层版本)。
内容的提问来源于stack exchange,提问作者FmFb
相关产品推荐
相关产品推荐

