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

AWS Amplify项目中Python Lambda共享自定义模块的实现方案

在AWS Amplify项目中提取Python Lambda通用代码为内部模块的方法

方法一:项目级共享目录 + Amplify构建配置

这是最简便的内部共享方式,无需依赖额外AWS服务,完全在Amplify项目内管理:

  1. 创建共享模块目录
    在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)
    }
  1. 修改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目录下。

  1. 在Lambda中导入使用
    Lambda代码里直接导入共享模块:
from shared.common_utils import format_response

def handler(event, context):
    return format_response(200, {'message': '操作成功'})

方法二:结合AWS Lambda层(Layers)

如果通用代码需要跨项目复用,或希望统一管理依赖,可使用Lambda层:

  1. 创建Lambda层
    通过Amplify CLI创建层:
amplify add function

选择「Lambda layer」,然后将共享代码放入层目录的opt/python下(Lambda层Python代码的标准路径),例如amplify/backend/function/CommonLayer/opt/python/common_utils.py。

  1. 部署层
    执行部署命令:
amplify push
  1. 关联Lambda与层
  • 方式一:在Amplify控制台找到目标Lambda,进入「层」配置页面添加已创建的层。
  • 方式二:编辑Lambda的amplify/backend/function/<Lambda名称>/function.json,在layers数组中添加层的ARN。
  1. 导入使用共享模块
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:52:30