【问题标题】:AWS Lambda Python with pyodbc - Unable to import module 'lambda_function': /var/task/lib/libodbc.so.2: file too short带有 pyodbc 的 AWS Lambda Python - 无法导入模块“lambda_function”:/var/task/lib/libodbc.so.2:文件太短
【发布时间】:2019-08-06 00:44:47
【问题描述】:

我正在尝试运行 AWS Lambda 函数,我需要 pyodbc 作为库。导入pyodbc时出现错误:

无法导入模块“lambda_function”:/var/task/lib/libodbc.so.2:文件太短。

我在这个错误上找不到太多信息。有没有其他人经历过这个/有关于如何克服它的建议?

到目前为止,我有:

  • 启动 EC2 实例并使用以下说明的组合创建部署包:https://gist.github.com/diriver63/b72a954fa0da4851d89e5086aa13c6e8 和此处:https://www.youtube.com/watch?v=xWbU_OnkFOo。如果我没有启动 EC2 实例并使用 Linux 打包我需要的东西,我会收到错误消息 - “[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)\ ")。

  • 我已确保我的所有文件都是单独压缩的,而不是压缩整个文件夹(如果压缩整个文件夹,我会收到“找不到 lamdba_function”错误)

  • 扁平化了我的文件结构,因此所有文件都位于主驱动器中,但 lib 和 lib64 文件夹中的文件除外。如果它们位于不同的文件夹中,我会收到不同的错误 - “无法导入模块 'lambda_function':没有名为 'pyodbc' 的模块”或“[01000] [unixODBC][Driver Manager]Can't open lib '\libodbc.所以'"See current file structure

【问题讨论】:

    标签: python aws-lambda


    【解决方案1】:

    我最终使用了这些说明:https://exagriddba.wordpress.com/category/python/ 这让我超越了这一点,但是遇到了包含 5 个库的文件太大并且达到 262mb 的限制的问题。将改为使用 Docker,但我认为如果不是因为限制,这些说明会让我们成功。过去 2 周出现了很多错误,很高兴尝试回答任何问题!

    【讨论】:

    • 嗨,我对 linux 很生疏,我设法让 docker 工作并使用 unixodbc 和 msodbcsql 连接到 sql server。但是,当我将文件上传到 lambda 时,即使我使用的是不同的驱动程序,我也无法导入模块 libodbc.so.2。您如何知道将哪些文件移动到 /home 目录并展平以确保 import pydobc 看到执行 sql 查询所需的一切?我尝试更改 odbcinst.ini 和 odbc.ini 文件但没有成功。提前致谢!
    • 干草生锈。你让它工作了吗?对我们来说,为了解决这个问题,我需要复制我们自己的 openssl.cnf 版本并在您的 Dockerfile 中包含:COPY openssl.cnf /etc/ssl/openssl.cnf
    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2021-06-28
    • 2018-08-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多