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

基于Serverless Framework构建并在AWS Lambda中使用本地Python包

部署本地Python包到AWS Lambda(结合Serverless Framework)

我来帮你一步步梳理操作流程,考虑到你需要和Glue作业等其他组件共享这个本地包,生成Wheel文件是最优方案,具体步骤如下:

1. 生成本地Python包的Wheel文件

Wheel是Python的标准分发格式,不仅pip处理效率高,还能轻松在Lambda、Glue等不同环境中复用。操作步骤:

  • 确保你的本地包根目录下有pyproject.toml(推荐)或setup.py,用来定义包的元信息(名称、版本、依赖等)
  • 在包的根目录运行命令生成Wheel:
    pip wheel . -w dist/
    
    执行后,dist/目录下会生成类似your_package-1.0.0-py3-none-any.whl的文件

2. 配置Serverless Framework及插件

你已经在用serverless-python-requirements插件,接下来需要让它识别并安装你的本地Wheel包:

方法一:通过requirements.txt指定

在项目根目录的requirements.txt中添加本地Wheel的路径:

./dist/your_package-1.0.0-py3-none-any.whl
# 其他第三方依赖也可以在这里添加,比如requests==2.31.0

方法二:直接在serverless.yml中配置(可选)

如果不想用requirements.txt,也可以在serverless.yml的custom区块里直接声明:

custom:
  pythonRequirements:
    dockerizePip: true # 重要!如果本地环境和Lambda(Linux)不一致,必须开启这个选项,避免依赖编译不兼容
    requirements:
      - ./dist/your_package-1.0.0-py3-none-any.whl
      - requests==2.31.0

注意:如果你的本地包包含C语言扩展,一定要开启dockerizePip: true,Lambda运行在Amazon Linux环境,本地(比如macOS/Windows)编译的扩展无法在Lambda上运行。

3. 本地测试(推荐)

在部署前可以先本地验证函数是否能正常运行:

serverless invoke local --function your_function_name

这会模拟Lambda环境加载你的代码和依赖,提前排查问题。

4. 部署到AWS Lambda

确认配置无误后,直接运行部署命令:

serverless deploy

serverless-python-requirements插件会自动处理所有依赖:

  • 下载/安装第三方包和你的本地Wheel
  • 将所有依赖和Lambda代码打包成zip文件
  • 上传到AWS Lambda并完成部署

额外:和Glue作业共享本地包

因为你需要和Glue共享这个包,你可以:

  • 把生成的Wheel文件上传到S3存储桶
  • 在Glue作业的配置中,通过--additional-python-modules参数指定S3上的Wheel路径,比如:
    aws glue start-job-run --job-name your_glue_job --arguments '--additional-python-modules=s3://your-bucket/dist/your_package-1.0.0-py3-none-any.whl'
    
  • 或者如果是Glue Studio作业,可以在“作业参数”的--additional-python-modules中填写S3路径

内容的提问来源于stack exchange,提问作者EnzoMolion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:23:13