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

Posted

技术标签:

【中文标题】如何在 AWS Lambda 中使用 Python 自定义包【英文标题】:How to work with Python custom packages in AWS Lambda 【发布时间】:2021-01-17 12:41:43 【问题描述】:

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

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

【问题讨论】:

这应该会有所帮助:towardsdatascience.com/… 【参考方案1】:

是的,我将为您的每个问题提供一些替代方案:

    您可以使用 *framework (chalice/serverless) 自动为您处理打包。每次部署都会获取最新版本(根据您的 requirements.txt)然后为您打包。我建议你坚持使用框架。

    Lambda Layer 正是您所需要的 - 多个 lambda 将能够运行您的模块而无需开销(简单来说)。有很多参考资料解释了如何创建一个层以及关于 python 打包(你是必须评估是否需要将其上传到 pypi 的人)

在这两种情况下,serverless 都会对您有很大帮助!

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何在 AWS Lambda 中使用 Python 自定义包的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 检索 AWS Lambda 公共 IP 地址?

我如何使用 aws lambda 将文件写入 s3 (python)?

在单个AWS Lambda中使用两个python函数boto3

在python中自动测试aws lambda函数

如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

如何将 Python Lambda 函数集成到 AWS Amplify 的管道中