【发布时间】:2021-08-11 05:33:27
【问题描述】:
我正在开发一个部署到 AWS Lambda 的无服务器 Flask 应用程序。该程序使用 Cryptography 库(使用版本 3.4.7)。在本地,该程序运行良好,没有任何问题。但是,无论何时部署在 Lambda 上,都会出现以下错误:
from cryptography.fernet import Fernet
File "/var/task/cryptography/fernet.py", line 16, in <module>
from cryptography.hazmat.primitives import hashes, padding
File "/var/task/cryptography/hazmat/primitives/padding.py", line 11, in <module>
from cryptography.hazmat.bindings._padding import lib
ImportError: /var/task/cryptography/hazmat/bindings/_padding.abi3.so: cannot open shared object file: No such file or directory
并且在使用“有害物质”模块中的一些必需功能时,会出现非常相似的错误:
File "/var/task/cryptography/hazmat/primitives/kdf/pbkdf2.py", line 28, in __init__
backend = _get_backend(backend)
File "/var/task/cryptography/hazmat/backends/__init__.py", line 23, in _get_backend
return default_backend()
File "/var/task/cryptography/hazmat/backends/__init__.py", line 14, in default_backend
from cryptography.hazmat.backends.openssl.backend import backend
File "/var/task/cryptography/hazmat/backends/openssl/__init__.py", line 6, in <module>
from cryptography.hazmat.backends.openssl.backend import backend
File "/var/task/cryptography/hazmat/backends/openssl/backend.py", line 113, in <module>
from cryptography.hazmat.bindings.openssl import binding
File "/var/task/cryptography/hazmat/bindings/openssl/binding.py", line 14, in <module>
from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: /var/task/cryptography/hazmat/bindings/_openssl.abi3.so: cannot open shared object file: No such file or directory
但是,引用的库文件确实存在,并且它们位于指定的确切路径中。
该应用在 requirements.txt 中包含 cryptography==3.4.7 作为依赖项。然后,Serverless 在使用 sls deploy 部署到 AWS 时安装这些包。无服务器将所有内容放在一个 zip 中并将其上传到 AWS。我可以按预期看到这个 zip 文件夹中的所有文件。
我认为这可能是无服务器在部署时错误地上传或安装软件包的问题,因此我什至尝试将密码学文件夹直接包含在我的项目中。但是,尽管对无服务器配置或加密程序包本身进行了任何更改,但我在部署的 Lambda 上使用此程序包并没有成功。有没有人知道我可以做些什么来完成这项工作?
【问题讨论】:
-
您必须明确说明您是如何使用这些依赖项创建函数或层的。
-
我添加了一些关于部署的信息。使用 sls deploy,所有包都被添加到应用程序的 zip 文件夹中并上传。非常感谢任何帮助!
标签: python amazon-web-services aws-lambda serverless-framework python-cryptography