无服务器框架 - Python和Requirements.txt

Kur*_*ile 10 aws-lambda serverless-framework

使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表.(例如请求).

但是,由于看起来这些依赖项未作为打包的一部分安装,因此我的部署函数失败了

'无法导入模块'处理程序':没有名为requests的模块'

我认为它是无服务器的pip安装,但我的结果zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)

是否有文件说明了执行此操作所需的内容及其工作原理?是pip安装这些还是在aws lambda端无服务器?

感谢谢谢!

Gaz*_*dge 11

你需要安装serverless-python-requirementsdocker

$ npm install serverless-python-requirements
Run Code Online (Sandbox Code Playgroud)

然后将以下内容添加到您的 serverless.yml

plugins:
   - serverless-python-requirements

custom:
  pythonRequirements:
     dockerizePip: non-linux
Run Code Online (Sandbox Code Playgroud)

确保在CLI中激活了python虚拟环境:

$ source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

使用pip安装任何依赖项 - 请注意,在CLI中,您可以通过venv终端文本的左侧判断venv是否处于活动状态

(venv) $ pip install <NAME>
(venv) $ pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

确保已打开docker然后正常部署无服务器

$ serverless deploy
Run Code Online (Sandbox Code Playgroud)

将会发生的事情是serverless-python-requirements使用lambda环境在docker中构建python包,然后将它们压缩起来,准备好与其余代码一起上传.

完整指南在这里


Hen*_*wan 6

现在您可以使用serverless-python-requirements.它适用于纯Python和需要本机编译的库(使用Docker):

一个无服务器v1.x插件,用于自动捆绑requirements.txt中的依赖项,并使它们在您的PYTHONPATH中可用.

需要无服务器> = v1.12


Ben*_*uer 0

无服务器框架不处理pip install. 解决方案参见/sf/answers/2785418051/