Cloud9 部署达到 numpy 的大小限制,pandas
Cloud9 deploy hitting size limit for numpy, pandas
我正在 Cloud9 中构建以部署到 Lambda。我的函数在 Cloud9 中运行良好,但是当我部署时出现错误
Unzipped size must be smaller than 262144000 bytes
运行 du -h | sort -h
表明我最大的罪犯是:
/debug
在 291M
/numpy
在 79M
/pandas
在 47M
/botocore
在 41M
我的功能非常简单,它调用一个服务,使用 panda 格式化响应,然后发送。
- 调试中的内容以及我如何从部署包中精简它down/eliminate?
- 如果其他人耗尽了大部分内存限制,他们将如何使用库?
了解问题根本原因的简要背景
问题不在于您的功能,而在于压缩包的大小。根据 AWS documentation,压缩包的总大小不得超过 3MB。话虽如此,如果包大小大于 3MB 这是不可避免的,因为库可能有很多依赖项,然后考虑将压缩包上传到 AWS S3 bucket
。注意:即使是 s3 存储桶也有 262MB
的大小限制。确保您的包裹不超过此限制。您发布的错误消息 Unzipped size must be smaller than 262144000 bytes
指的是部署包的大小,也就是库。
现在,了解使用 AWS 时的一些事实,
- AWS 容器为空。
- AWS 容器有一个 linux 内核
- AWS Cloud9 只是一个 IDE,类似于 RStudio 或 Pycharm。它使用 S3 存储桶来保存已安装的包。
这意味着您需要了解以下内容:
包及其相关依赖项
从 cloud9 中提取 linux 编译的包并保存到文件夹结构中,如 python/lib/python3.6/site-packages/
Possible/Workable解决这个问题
通过减小包大小来解决这个问题。见下文。
减小部署包大小
手动方法:删除每个库文件夹中名为 *.info
和 *._pycache
的文件和文件夹。您需要手动查看每个文件夹中的上述文件扩展名才能删除它们。
自动方法:我要弄清楚命令。进行中
使用图层
在 AWS 中转到 Lambda 并创建一个层
附加包含 python 程序包文件夹的 S3 存储桶 link。确保 lambda 函数 IAM 角色有权访问 S3 存储桶。
确保解压缩后的文件夹大小小于 262MB。因为如果它 >260 MB 那么它不能附加到 AWS 层。你会得到一个错误,Failed to create layer version: Unzipped size must be smaller than 262144000 bytes
我正在 Cloud9 中构建以部署到 Lambda。我的函数在 Cloud9 中运行良好,但是当我部署时出现错误
Unzipped size must be smaller than 262144000 bytes
运行 du -h | sort -h
表明我最大的罪犯是:
/debug
在 291M/numpy
在 79M/pandas
在 47M/botocore
在 41M
我的功能非常简单,它调用一个服务,使用 panda 格式化响应,然后发送。
- 调试中的内容以及我如何从部署包中精简它down/eliminate?
- 如果其他人耗尽了大部分内存限制,他们将如何使用库?
了解问题根本原因的简要背景
问题不在于您的功能,而在于压缩包的大小。根据 AWS documentation,压缩包的总大小不得超过 3MB。话虽如此,如果包大小大于 3MB 这是不可避免的,因为库可能有很多依赖项,然后考虑将压缩包上传到 AWS S3 bucket
。注意:即使是 s3 存储桶也有 262MB
的大小限制。确保您的包裹不超过此限制。您发布的错误消息 Unzipped size must be smaller than 262144000 bytes
指的是部署包的大小,也就是库。
现在,了解使用 AWS 时的一些事实,
- AWS 容器为空。
- AWS 容器有一个 linux 内核
- AWS Cloud9 只是一个 IDE,类似于 RStudio 或 Pycharm。它使用 S3 存储桶来保存已安装的包。
这意味着您需要了解以下内容:
包及其相关依赖项
从 cloud9 中提取 linux 编译的包并保存到文件夹结构中,如
python/lib/python3.6/site-packages/
Possible/Workable解决这个问题
通过减小包大小来解决这个问题。见下文。
减小部署包大小
手动方法:删除每个库文件夹中名为
*.info
和*._pycache
的文件和文件夹。您需要手动查看每个文件夹中的上述文件扩展名才能删除它们。自动方法:我要弄清楚命令。进行中
使用图层
在 AWS 中转到 Lambda 并创建一个层
附加包含 python 程序包文件夹的 S3 存储桶 link。确保 lambda 函数 IAM 角色有权访问 S3 存储桶。
确保解压缩后的文件夹大小小于 262MB。因为如果它 >260 MB 那么它不能附加到 AWS 层。你会得到一个错误,Failed to create layer version: Unzipped size must be smaller than 262144000 bytes