Lambda错误:找不到模块。密码学.hamtaz.bindings._constant_time

时间:2018-12-02 18:03:11

标签: python aws-lambda snowflake

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

  

未找到模块。密码学.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()

4 个答案:

答案 0 :(得分:2)

我最近遇到了同样的问题。事实证明,我的Lambda函数运行时是Python 3.8,但“ cffi”库已针对Python 3.6进行了编译。我用Python 3.6运行时创建了一个新的Lambda函数,并将其部署包上传到该函数,它立即开始工作。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我最近遇到了同样的问题,发现这是Windows环境的问题,尝试创建linux环境,安装Python,软件包,使用所有库压缩您的代码,然后将其放回AWS lambda,希望它可以工作。

答案 3 :(得分:0)

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