模块初始化错误:无法在 AWS lambda 上加载本机模块“Crypto.Cipher._raw_ecb”

2023-12-10

我正在使用 AWS lambda 提供服务。我正在使用 PyCryptodome 进行加密和解密。我可以在本地测试我的应用程序,但是当我上传到 AWS lambda 进行解密时。我得到的错误是

模块初始化错误:无法加载本机模块'Crypto.Cipher._raw_ecb':尝试'_raw_ecb.cpython-36m-x86_64-linux-gnu.so':/var/task/Cryptodome/Util/../Cipher/_raw_ecb.cpython -36m-x86_64-linux-gnu.so:无法打开共享对象文件:没有这样的文件或目录,尝试“_raw_ecb.abi3.so”:/var/task/Cryptodome/Util/../Cipher/_raw_ecb.abi3。所以:无法打开共享对象文件:没有这样的文件或目录,尝试'_raw_ecb.so':/var/task/Cryptodome/Util/../Cipher/_raw_ecb.so:无效的ELF标头

我的解密代码是

    def blowfish_decrypt(enc):
        secret_key = b"somestring"
        iv = b"somerandomiv"
        logger.info("in the decrypter")
        crypt_obj = bf_cbc.new(secret_key, bf_cbc.MODE_CBC, IV=iv)
        original = crypt_obj.decrypt(base64.b64decode(enc))
        original = original.decode("utf-8")
        logger.info("decrypted")
        return original

我正在关注资源:https://github.com/pyinstaller/pyinstaller/issues/2125,但这也没有帮助我。

应用指定的所有详细信息后,我收到与上述相同的错误。


您的本地开发环境与 Lambda 执行环境似乎不兼容。 PyCryptodome 使用的本机库不可跨这两种环境移植; pip 安装库的环境很重要。

修复它的一种方法是使用Lambcidocker 镜像来构建库,然后将其添加到 zip 文件中。假设你已经安装了 Docker,执行

docker pull lambci/lambda:build-python3.6
docker run --rm -v `pwd`:/var/task lambci/lambda:build-python3.6 pip install pycryptodome -t pycryptodome

这将在 docker 环境中 pip 安装该库。命令完成后,您将在 pycryptodome 本地目录中找到它。

对于更自动化/可重复的方式,请查看AWS SAM and aws-sam-cli它为您提供了一些非常有用的命令来构建、打包和部署 Lambda 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块初始化错误:无法在 AWS lambda 上加载本机模块“Crypto.Cipher._raw_ecb” 的相关文章

随机推荐