如何在AWS Lambda中使用Python自定义包

问题描述

我有我的app.py函数,该函数正在使用sqlAlchemy等pip库...将其部署到AWS Lambda,因此我将app.py和所有其他依赖项打包到一个zip中。

  1. 是否有更好的方法解决此问题? (如果点子库过时了怎么办)
  2. 我有一个要在许多程序中使用的自定义代码。如何创建自己的模块并将其与pip库一起打包?

解决方法

是的,我会给您一些替代方法,以解决您的每个问题:

  1. 种类繁多,您可以使用*框架(chalice / serverless)为您自动处理包装。每次部署将获取最新版本(根据您的requirements.txt)并打包。我建议您坚持使用框架。

  2. Lambda Layer正是您需要的-多个lambda可以运行您的模块而不会产生开销(简单来说)。有很多参考资料说明了如何创建层以及有关python打包(您是必须评估将其上传到pypi的需要的人)

在两种情况下,serverless都会为您提供很多帮助!

,

关于1-AWS SAM将计算出requirements.txt并将所需的内容与代码捆绑在一起。对于小型项目,这很好用,但是对于大型项目,我建议采用与库代码相同的方式-将所有部门放在单独的层中。它可以与pip install -U --target dirname一起安装,然后打包成一个层。