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

在AWS Lambda部署含TensorFlow的微服务遇阻求助

解决AWS Lambda部署TensorFlow微服务的体积过大与依赖缺失问题

我太懂这种卡在部署环节的挫败感了——TensorFlow本身体积就不小,和Serverless+Lambda搭配确实容易踩坑。结合你的情况,我给你几个可行的解决方案,一步步来:

问题根源先理清楚

  1. 依赖缺失错误:AWS Lambda不会自动帮你从requirements.txt安装依赖,必须把代码和依赖打包在一起,或者用Lambda Layer单独托管依赖。
  2. 体积过大失败:完整版TensorFlow解压后体积远超Lambda的250MB限制,直接打包肯定会失败。

方案一:用Serverless Python Requirements插件(最省心)

这个插件专门解决Python Serverless项目的依赖打包问题,能自动剔除冗余文件、将依赖打包成Lambda Layer,完美适配你的场景。

步骤:

  1. 安装插件(需要先有Node.js环境):
npm install serverless-python-requirements --save-dev
  1. 修改你的serverless.yml,添加插件和优化配置:
service: numpy-new-test
provider:
  name: aws
  runtime: python3.6 # 注意:AWS已停止维护Python3.6,建议升级到3.9/3.10
  profile: nsp
  role: arn:aws:iam::xxxxxxxxxxx7:role/AdminRole
plugins:
  - serverless-python-requirements
custom:
  pythonRequirements:
    slim: true # 自动剔除TensorFlow里的文档、测试文件,大幅减小体积
    layer: true # 将依赖打包成Lambda Layer,不占用函数包体积
functions:
  numpy:
    handler: handler.main
    events:
      - http:
          path: test
          method: get
  1. 修改requirements.txt,改用CPU版本的TensorFlow(Lambda是CPU环境,不需要GPU版,体积小很多):
numpy
tensorflow-cpu==2.6.0 # 2.6是最后支持Python3.6的版本,升级Python后可以用更高版本
  1. 重新部署:
serverless deploy

方案二:手动创建Lambda Layer(适合需要精细控制的场景)

如果你不想用插件,可以手动把依赖打包成Layer:

步骤:

  1. 创建如下目录结构:
layers/
└── python/
    └── lib/
        └── python3.6/
            └── site-packages/
  1. 在layers/python/lib/python3.6/site-packages/目录下安装依赖:
pip install numpy tensorflow-cpu==2.6.0 -t ./layers/python/lib/python3.6/site-packages/
  1. 进入layers/目录,打包成zip:
cd layers
zip -r tensorflow-layer.zip python/
  1. 在AWS Lambda控制台上传这个zip包创建Layer,记录Layer的ARN。
  2. 修改serverless.yml,在函数中引用这个Layer:
functions:
  numpy:
    handler: handler.main
    layers:
      - arn:aws:lambda:你的AWS区域:你的账号ID:layer:tensorflow-layer:1 # 替换成你的Layer ARN
    events:
      - http:
          path: test
          method: get
  1. 部署函数即可,此时你的函数包只有handler.py,体积很小。

额外提醒

  • Python版本升级:AWS Lambda已经不再支持Python3.6,建议把runtime改成python3.9或python3.10,这样可以使用更新的TensorFlow版本(比如2.15.x),也能获得更好的性能和安全性。
  • 测试本地依赖:可以用serverless invoke local命令在本地测试函数,确保依赖没问题再部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:44:10