我正在通过Chalice部署Python 3.7 Lambda函数。由于代码的环境要求,大于50MB的限制,我使用的是";automatic_layer";Chalice的特征生成了符合要求的图层,即awswrangler
。
因为生成的层是>50MB,我正在手动将生成的managed-layer-...-python3.7.zip
上传到s3并创建Lambda层。然后,我用圣杯重新部署,删除automatic_layer
选项,并将layers
设置为我手动创建的层的生成ARN。
以这种方式部署的功能在几次内都正常工作,然后偶尔会出现"故障;分段故障";。错误率很快就增加了,现在它失败了100%。
Traceback:
> OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
> START RequestId: 3b98bd4b-6cda-4d21-8090-1a49b17c06fc Version: $LATEST
> OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
> END RequestId: 3b98bd4b-6cda-4d21-8090-1a49b17c06fc
> REPORT RequestId: 3b98bd4b-6cda-4d21-8090-1a49b17c06fc Duration: 7165.04 ms Billed Duration: 7166 ms Memory Size: 128 MB Max Memory Used: 41 MB
> RequestId: 3b98bd4b-6cda-4d21-8090-1a49b17c06fc Error: Runtime exited with error: signal: segmentation fault (core dumped)
> Runtime.ExitError
由于CCD_ 5本身需要boto3&botocore,并且它们已经处于Lambda环境中,我怀疑可能存在不同版本的boto的冲突。我尝试了同样的流程,明确地将boto3和botocore包含在需求中,但我仍然收到相同的分段错误。
非常感谢您的帮助。
您可以使用AWS X射线获取有关该问题的更多信息: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进行分析。命令";"人芯";可以帮助你。