War*_*x56 6 python aws-lambda serverless-framework
在 serverless.yml 中使用以下设置时
custom:
pythonRequirements:
dockerizePip: true
slim: true
zip: true
Run Code Online (Sandbox Code Playgroud)
slim:true并slim:false产生相同的文件大小。我可以采取什么措施来减小 zip 文件的文件大小?
我正在尝试获取 python 代码,它依赖于使用无服务器框架的 aws lambda 函数。按照此处提供的建议减少依赖项大小以符合 250MB lambda 限制。在我的 serverless.yml 文件中,我有以下内容:
provider:
name: aws
runtime: python3.6
plugins:
- serverless-python-requierments
custom:
pythonRequierments:
dockerizePip: true
slim: true
zip: true
functions:
...
Run Code Online (Sandbox Code Playgroud)
我的requierments.txt如下:
xgboost==1.3.3
pandas==1.0.1
numpy == 1.18.5
...
Run Code Online (Sandbox Code Playgroud)
我不断收到以下错误:
Unzipped size must be smaller than 262144000 bytes..
Run Code Online (Sandbox Code Playgroud)
这让我相信我的 requierments.zip 文件太大;详细输出说明uploading service test.zip file to s3 271.17 MB。
我正在尝试缩小文件大小,我运行sls deploy,dockerizePip并slim设置false为用于测试目的,我得到了相同的结果;271.17 Mb 的 test.zip 文件。这似乎令人困惑,因为我知道它slim: true会在压缩文件之前减小文件大小,但运行并slim:true产生slim:false相同的文件大小。我怎样才能slim工作?
我尝试在此处slimPattern添加一个讨论的内容pythonRequierments
slimPatterns:
- '**/*.dist-info/**'
Run Code Online (Sandbox Code Playgroud)
但所有 dist info 目录仍然存在于 zip 文件中,并且输出大小相同 (271.17MB)
我保留了更新 1 中的所有内容,但删除了 .serverless 目录和 requierments.zip。所有 .dist-info 目录仍然保留,即使我将它们排除在外slimPatterns(或者我是这么认为的)。
我尝试使用包排除,执行以下操作:
package:
exclude:
-node_modules/**
-'**/*.dist-info/**'
Run Code Online (Sandbox Code Playgroud)
这确实成功地删除了node_modules(我之前应该这样做),但没有成功地.requierments.zip以任何方式进行更改。所有.dist-info目录均保留。
我按照这个,添加了一个noDeploy字段pythonRequirements,其中包括setuptools和six。尽管如此,两者最终都在我的 中.requirements.zip,并且我的文件大小没有改变(269.9 Mb,与更新 3 相同,由于删除了 ,所以文件大小稍小node_modules)
它对我也不起作用。我最终使用以下选项使用图层 -
custom:
pythonRequirements:
slim: true
layer: true
Run Code Online (Sandbox Code Playgroud)
这将我的部署包大小减少到不到 10mb。然后,所有依赖项都会进入一个单独的 zip (~100mb),从而创建 Lambda 层。这也有助于减少 Lambda 冷启动问题。
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |