0

我能够将我的 PyNaCl 库作为一个层添加到 Lambda(Python 3.8)中,但是由于某种原因,当我尝试测试代码时出现错误

“errorMessage”:“无法导入模块'lambda_function':没有名为'_cffi_backend'的模块”,“errorType”:“Runtime.ImportModuleError”

现在,当我在本地使用 PyCharm 并将 PyNaCl 库安装到 venv 中时,我没有执行错误。Lambda 是否要求文件层次结构不同?我将库压缩为 /​​lib/python3.8/site-packages,其中包含的唯一库是 PyNaCl

4

2 回答 2

2

您的问题有两个可能的原因:

  1. lib 文件夹结构不准确。尝试 python/lib/python3.8/site-packages,然后压缩并再次上传

  2. 如果 (1) 不起作用,这可能是您使用的库是在与 Amazon Lambda 不兼容的平台上编译的。Amazon Lambda 基于 Amazon Linux。一个简单的方法是使用 AWS 提供的 docker 文件创建一个 docker 镜像(注意你的 python 版本):

https://docs.aws.amazon.com/lambda/latest/dg/python-image.html

然后在容器内编译PyNaCl库,取出编译好的库文件,再次上传。

于 2021-01-25T08:50:35.407 回答
0

Lambda 要求该层 .zip 存档目录结构以pythondir 开头。通常有效的是:

mkdir python
pip install pynacl -t python

这应该创建正确的结构。压缩并作为图层上传。

或者,您可以构建具有依赖项的 docker 映像并在 lambda 中使用它:https ://docs.aws.amazon.com/lambda/latest/dg/images-create.html

于 2021-01-14T22:48:28.553 回答