Amazon web services 减少无服务器部署包的大小

Amazon web services 减少无服务器部署包的大小,amazon-web-services,aws-lambda,serverless-framework,Amazon Web Services,Aws Lambda,Serverless Framework,我有一个python脚本,我想在AWS上作为lambda函数运行。不幸的是,解压包的大小超过了允许的250MB,这主要是由于numpy(85mb)和pandas(105mb) 我已经做了以下工作,但尺寸仍然太大: 1) 排除未使用的文件夹: package: exclude: - testdata/** - out/** - etc/** 2) 压缩python包: custom: pythonRequirements:

我有一个python脚本,我想在AWS上作为lambda函数运行。不幸的是,解压包的大小超过了允许的250MB,这主要是由于numpy(85mb)和pandas(105mb)

我已经做了以下工作,但尺寸仍然太大:

1) 排除未使用的文件夹:

package:
    exclude:
        - testdata/**
        - out/**
        - etc/**
2) 压缩python包:

custom:
    pythonRequirements:
        dockerizePip: true 
        zip: true
如果我解压缩由
无服务器软件包生成的zip文件,我会找到一个
.requirements.zip
,其中包含我的python软件包,然后在
.virtualenv/
文件夹中还有我的虚拟环境,其中再次包含所有python软件包。我已尝试排除
serverless.yml
中的
.virtualenv/./lib/python3.6/site packages/**
文件夹,但调用该函数时出现内部服务器错误

是否有任何其他参数可以减小软件包大小?

(您确定在微服务中需要
pandas
numpy
?这些库中没有任何“micro”)

有办法。用Zappa部署你的Lambda。无论如何,这是一种编写、部署和管理Python lambda的方便方法。但是使用Zappa,您可以指定一个名为
slim\u handler
的选项。如果设置为
true
,则大多数代码将驻留在S3,并在执行Lambda后被提取:

AWS目前将Lambda zip大小限制为50兆字节。如果你的项目 大于该值时,请在 zappa_settings.json。在这种情况下,您的fat应用程序包将 只能用一个小的处理程序包替换。处理程序文件 在运行时将大型项目的其余部分从S3中拉下来!这个 大型项目的初始负载可能会增加启动开销,但 温lambda函数的差异应该最小。请注意 还会占用应用程序函数的内存空间


zip文件中不应包含
.virtualenv/
目录。 如果目录与
serverless.yml
位于同一目录中,则应将其添加到
serverless.yml
文件中的exlude中,否则它将与其他文件打包:

package:
  exclude:
    - ...
    - .virtualenv/**
  include:
    - ...

我认为这些信息已经过时,zip文件的大小无关紧要,重要的是解压文件的大小,它必须小于250 Mb。这些信息是最新的。部署包的大小不能超过50 Mb。未压缩代码的大小不能超过250 Mb,但这与此处无关。Zappa将把代码/库下载到
/tmp
,它允许高达512MB的存储空间。嗯……这很奇怪,我部署了50+Mb的zip好几次,但它只是在解压大小大于250Mb时才停止工作,它明确表示解压文件的大小必须是,我不能对此发表评论,但文档非常清楚,部署包只有50MB:似乎只要通过s3加载zip,就可以超过50MB。250MB的解压限制是相同的。