微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Lambda Chalice 层分割错误

如何解决AWS Lambda Chalice 层分割错误

我正在通过 Chalice 部署 Python 3.7 Lambda 函数。由于其环境要求的代码大于 50 MB 限制,因此我使用 Chalice 的“automatic_layer”功能生成符合要求的层,即 awswrangler

由于生成的层 > 50 MB,我将生成managed-layer-...-python3.7.zip 手动上传到 s3 并创建一个 Lambda 层。然后我使用 chalice 重新部署,删除 automatic_layer 选项并将 layers 设置为我手动创建的层的生成 ARN。

以这种方式部署的函数可以正常运行几次,然后偶尔会因“分段错误”而开始失败。错误率很快增加,现在失败了 100%。

追溯:

OpenBLAS 警告 - 无法确定此系统上的 L2 缓存大小,假设为 256k 开始请求 ID:3b98bd4b-6cda-4d21-8090-1a49b17c06fc ​​版本:$LATEST OpenBLAS 警告 - 无法确定此系统上的 L2 缓存大小,假设为 256k 结束请求 ID:3b98bd4b-6cda-4d21-8090-1a49b17c06fc 报告 RequestId:3b98bd4b-6cda-4d21-8090-1a49b17c06fc ​​持续时间:7165.04 ms 计费持续时间:7166 ms 内存大小:128 MB 已用最大内存:41 MB RequestId:3b98bd4b-6cda-4d21-8090-1a49b17c06fc ​​错误:运行时退出错误:信号:分段错误(核心转储) 运行时.退出错误

由于awswrangler本身需要boto3&botocore,而且已经在Lambda环境中,所以怀疑可能是boto不同版本冲突。我通过在要求中明确包含 boto3 和 botocore 来尝试相同的流程,但我仍然收到相同的分段错误错误

非常感谢任何帮助。

解决方法

您可以使用 AWS X-Ray 获取有关该问题的更多信息:https://docs.aws.amazon.com/lambda/latest/dg/python-tracing.html

此外,您可以分析在 bash shell 上执行 lambda 函数时生成的核心转储:

  ulimit -c unlimited
  cd /tmp
  ececute your python ...

您应该找到一个名为 /tmp/core..... 的文件,您应该在下载后使用 gdb 对其进行分析。命令“man core”可以帮助你。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?