gpt4 book ai didi

python - conda 环境到 AWS Lambda

转载 作者:IT老高 更新时间:2023-10-28 22:19:20 25 4
gpt4 key购买 nike

我想设置一个我在 AWS Lambda 上编写的 Python 函数,该函数依赖于我已经在 conda environment 中收集的一堆 Python 库。 .

要在 Lambda 上设置这个,我应该压缩这个环境,但是 Lambda docs仅提供有关如何使用 pip/VirtualEnv 执行此操作的说明。有人有这方面的经验吗?

最佳答案

您应该使用 serverless framework结合 serverless-python-requirements plugin .您只需要一个 requirements.txt,插件会自动将您的代码和依赖项打包到一个 zip 文件中,将所有内容上传到 s3 并部署您的函数。奖励:因为它可以做这个 dockerized,它也可以帮助你处理需要二进制依赖的包。

看看here (https://serverless.com/blog/serverless-python-packaging/)获取操作方法。

根据经验,我强烈建议您调查一下。用于部署的每一点手工劳动都会阻碍您开发逻辑。

2017-12-17 编辑:

您的评论很有道理@eelco-hoogendoorn .

但是,在我看来,conda 环境只是一个封装了一堆 python 包的地方。因此,如果您将所有这些依赖项(来自您的 conda env)放入一个 requirements.txt (并使用无服务器 + 插件)中,这样可以解决您的问题,不是吗?
恕我直言,它本质上与将您在 env 中安装的所有包压缩到部署包中相同。话虽如此,这里有一个片段,它本质上是这样做的:

conda env export --name Name_of_your_Conda_env | yq -r '.dependencies[] | .. | select(type == "string")' | sed -E "s/(^[^=]*)(=+)([0-9.]+)(=.*|$)/\1==\3/" > requirements.txt

不幸的是 conda env export 只以 yaml 格式导出环境。 --json 标志现在不起作用,但应该在下一个版本中修复。这就是为什么我必须使用 yq 而不是 jq。您可以使用 pip install yq 安装 yq。它只是 jq 的一个包装器,以允许它也可以处理 yaml 文件。

记住

Lambda 部署代码的大小只能为 50MB。你的环境不应该太大。

我没有尝试使用 serverless + serverless-python-packagingrequirements.txt 来部署 lambda,但我不这样做不知道它是否会起作用。

关于python - conda 环境到 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39750279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com