Fro*_*sen 5 amazon-web-services aws-lambda serverless-framework
我有一个 python 脚本,我想在 AWS 上作为 lambda 函数运行。不幸的是,解压后的包比允许的 250 MB 大,主要是由于 numpy (85mb) 和 pandas (105mb)
我已经做了以下但大小仍然太大:
1) 排除未使用的文件夹:
package:
exclude:
- testdata/**
- out/**
- etc/**
Run Code Online (Sandbox Code Playgroud)
2)压缩python包:
custom:
pythonRequirements:
dockerizePip: true
zip: true
Run Code Online (Sandbox Code Playgroud)
如果我解压缩由serverless package
我生成的 zip 文件,我会找到一个.requriements.zip
包含我的 python 包的.virtualenv/
文件夹,然后文件夹中还有我的虚拟环境,其中再次包含所有 python 包。我试图排除 中的.virtualenv/../lib/python3.6/site-packages/**
文件夹serverless.yml
,但随后在调用该函数时出现内部服务器错误。
还有其他参数可以减小封装尺寸吗?
Ser*_*lev -6
(您确定需要微服务pandas
吗numpy
?这些库中没有任何“微”内容)。
有一种方法。使用 Zappa 部署 Lambda https://github.com/Miserlou/Zappa。无论如何,这是一种编写、部署和管理 Python Lambda 的便捷方法。但使用 Zappa,您可以指定一个名为 的选项slim_handler
。如果设置为true
,您的大部分代码将驻留在 S3 中,并在 Lambda 执行后被拉取:
AWS 目前将 Lambda zip 大小限制为 50 MB。如果您的项目大于此值,请在 zappa_settings.json 中设置 slim_handler: true。在这种情况下,您的胖应用程序包将被替换为仅包含处理程序的小型包。然后,处理程序文件在运行时从 S3 中拉取大型项目的其余部分!大型项目的初始负载可能会增加启动开销,但在热 lambda 函数上差异应该很小。请注意,这也会占用应用程序函数的内存空间。
归档时间: |
|
查看次数: |
2953 次 |
最近记录: |