Lambda error: no module found. Cryptography.hamtaz.bindings._constant_time

Lambda error: no module found. Cryptography.hamtaz.bindings._constant_time

我创建了一个将数据上传到雪花的 lambda 函数。我在文件夹中安装了所有要求,并与我的主 python 文件一起压缩。在 AWS 中 运行 显示错误:

no module found. Cryptography.hamtaz.bindings._constant_time.

但是我在指定路径下有这个模块。我不知道为什么它显示错误。不知道为什么会报错

代码如下:

main(event, context):
  import snowflake.connector
  cnx = snowflake.connector.connect( user='xxx', password='yyyyy', account='zzzz', database="db Name", schema = "schema Name" )
  try:
    query = "SELECT * FROM Table_Name"
    cnx.cursor().execute(query)
  finally:
    cnx.close()

我需要为我的 lambda 包设置一个 virtualenv 才能工作。我还发现 pip install snowflake-connector-python 没有安装一些加密库,尽管如果我导航到我希望将它们放入的目录,添加 --target 。确实导致安装了这些库。

我最近遇到了同样的问题,发现它是 windows 环境的问题,尝试创建 linux 环境,安装 Python,打包,用所有库压缩你的代码和然后返回到 AWS lambda,希望它会起作用。

对于 python 3.6,当我在 AWS Lambda 函数中遇到错误 "Unable to import module 'main': No module named '_cffi_backend'" 时,我能够 运行 mv _cffi_backend.cpython-36m-x86_64-linux-gnu.so _cffi_backend.so 在我的 linux docker image with virtualenv问题得到解决。就像上面提到的,一些依赖项可能更好地放置在 --target 中,以便将它们放在你需要的地方

我最近遇到了同样的问题。原来我的 Lambda 函数运行时是 Python 3.8,但是 'cffi' 库是为 Python 3.6 编译的。我使用 Python 3.6 运行时创建了一个新的 Lambda 函数并将我的部署包上传到它,它立即开始工作。