gpt4 book ai didi

python - 如何在 S3 上存储大型 Python 依赖项(适用于无服务器的 AWS Lambda)

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:03 25 4
gpt4 key购买 nike

我正在使用 AWS Lambda 托管一个 Python 项目,使用无服务器框架管理部署,并且遇到了常见的 50MB 包存储限制。到目前为止,我已经使用 serverless-python-individually 和 serverless-python-requirements 插件成功地将我的需求拆分为每个函数,将每个文件作为单独的 Lambda 函数进行 dockerise、压缩和上传,如关键部分所示我的 serverless.yml 文件,如下所示。

这将前三个功能包保持在 50MB 以下,并创建了一个简单的工作流程,我可以在其中简单地使用以下命令推送更改:sls deploy --pi-dockerizedPip。然而,第四个包,只有 SciPy 的要求,不能减少到 52MB 以下,经过大量阅读,我看到的唯一常见方法是将我的依赖项上传到 S3(某处)并以某种方式确保我的导入语句能够找到依赖项。

我还没有找到明确的说明来说明应该如何完成打包依赖项的过程,以及(几乎同样重要)如何与 Serverless 一起工作(这样我就可以保持良好的工作流程)?

serverless.yml 的关键部分:

package:
individually: True
exclude:
# Exclude everything first.
- '**/*'

functions:
brain:
handler: src/1-brain/wrap.handler
package:
include:
- src/1-brain/**
events:
- schedule: rate(5 minutes)
data:
handler: src/2-data/wrap.handler
package:
include:
- src/2-data/**
strategy:
handler: src/3-strategy/wrap.handler
package:
include:
- src/3-strategy/**
balancer:
handler: src/4-portfolio-balancer/wrap.handler
package:
include:
- src/4-portfolio-balancer/**
custom:
pythonRequirements:
useDownloadCache: true
useStaticCache: true
dockerizePip: true
zip: true
slim: true
pyIndividually:
wrap:brain: src/1-brain/aws_handler.handler # mapping to the real handler
wrap:data: src/2-data/datafeed.handler # mapping to the real handler
wrap:strategy: src/3-strategy/strategy.handler # mapping to the real handler
wrap:balancer: src/4-portfolio-balancer/balancer.handler # mapping to the real handler

最佳答案

AWS Lambda 层使您能够将您的程序包/环境捆绑到一个层中。您最多可以使用 5 层,并且所有相应层的累积总和 + 任何特定 lambda 函数的 lambda 代码的未压缩限制为 250 MB。

查看“在层中包含库依赖项”部分 https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

关于python - 如何在 S3 上存储大型 Python 依赖项(适用于无服务器的 AWS Lambda),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54700747/

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