我使用awslambda托管一个Python项目,使用Serverless框架管理部署,并且遇到了通常达到50MB的包存储限制。到目前为止,我已经成功地将我的需求划分为每个函数,分别使用serverless python和serverless python需求插件将每个文件作为一个单独的Lambda函数进行dockerise、压缩和上传,如我的无服务器.yml文件,如下所示。在
这使得前三个函数包保持在50MB以下,并创建了一个简单的工作流,在这个工作流中,我可以简单地使用:sls deploy --pi-dockerizedPip来推送更改。但是,第四个包只需要SciPy,不能减少到52MB以下,在阅读了大量之后,我看到的唯一常见方法是上传我的依赖项(ies?)以某种方式确保我的import语句能够找到依赖关系。在
我还没有找到明确的说明,说明这个打包依赖性的过程应该如何完成,以及(几乎同样重要)如何与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