【问题标题】:Cloud9 deploy hitting size limit for numpy, pandasCloud9 部署达到 numpy、pandas 的大小限制
【发布时间】:2019-11-14 15:39:51
【问题描述】:

我正在 Cloud9 中构建以部署到 Lambda。我的功能在 Cloud9 中运行良好,但是当我去部署时出现错误

解压后的大小必须小于 262144000 字节

运行du -h | sort -h 表明我最大的罪犯是:

  • /debug 291M
  • /numpy 79M
  • /pandas 47M
  • /botocore 在 41M

我的函数非常简单,它调用一个服务,使用 panda 格式化响应,然后发送它。

  1. 调试中有什么?如何从部署包中精简/消除它?
  2. 如果其他人占用了大部分内存限制,他们将如何使用库?

【问题讨论】:

    标签: pandas aws-lambda aws-cloud9


    【解决方案1】:

    了解问题根源的简要背景

    问题不在于您的功能,而在于压缩包的大小。根据 AWS documentation,压缩包的总大小不得超过 3MB。话虽如此,如果包大小不可避免地大于 3MB,因为库可能有许多依赖项,那么请考虑将压缩包上传到 AWS S3 bucket。注意:即使 s3 存储桶的大小限制为 262MB。确保您的包裹不超过此限制。您发布的错误消息Unzipped size must be smaller than 262144000 bytes 指的是部署包(即库)的大小。

    现在,了解使用 AWS 时的一些事实,

    1. AWS 容器是空的
    2. AWS 容器有一个 linux 内核
    3. AWS Cloud9 只是一个类似于 RStudio 或 Pycharm 的 IDE。它使用 S3 存储桶来保存已安装的包。

    这意味着您需要了解以下内容:

    1. 包及其相关依赖项

    2. 从 cloud9 中提取 linux 编译的包并保存到一个文件夹结构中,例如 python/lib/python3.6/site-packages/

    解决此问题的可能/可行的解决方案

    通过减小封装大小来克服这个问题。见下文。

    减小部署包大小

    • 手动方法:删除每个库文件夹中名为 *.info*._pycache 的文件和文件夹。您需要手动查看上述文件扩展名的每个文件夹以将其删除。

    • 自动方法:我必须弄清楚命令。正在进行中

    使用图层

    在 AWS 中转到 Lambda 并创建一个层

    附加包含 python 包文件夹的 S3 存储桶链接。确保 lambda 函数 IAM 角色有权访问 S3 存储桶。

    确保解压后的文件夹大小小于 262MB。因为如果它 >260 MB,那么它就不能附加到 AWS 层。你会得到一个错误,Failed to create layer version: Unzipped size must be smaller than 262144000 bytes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多