【问题标题】:My Python script using Paramiko runs perfectly in the IDE (PyCharm) and command line but doesn't run on AWS Lambda我使用 Paramiko 的 Python 脚本在 IDE (PyCharm) 和命令行中完美运行,但不能在 AWS Lambda 上运行
【发布时间】:2020-11-20 01:33:17
【问题描述】:

我正在编写一个 Python 脚本(Mac OS 10.15.7 上的 Python 版本 3.7),我打算将它放在我们的 AWS Lambda 服务器上,并且该脚本使用 Paramiko。它在我的 IDE 和命令行中运行得非常好,但是当我尝试在 Lambda 上运行它时,我收到以下错误消息:

{
  "errorMessage": "Unable to import module 'lambda_function': libs/bcrypt/_bcrypt.abi3.so: invalid ELF header",
  "errorType": "Runtime.ImportModuleError"
}

我在 Stack Overflow 上找到了this similar-looking question,但该问题的答案似乎不适用于这种情况,因为它们与 Windows 和不同的 Python 库有关。但也许我错过了什么?

编辑:可能相关的是我的计算机安装了 Python 3.9,但我正在尝试用 Python 3.7 编写它。

【问题讨论】:

  • 您是如何将Paramiko 与您的 lambda 捆绑在一起的?
  • 根据我的经验,当操作系统缺少一个包时,linux 通常会抛出一个“无效的 ELF 头”,在 Arch linux 的情况下,binutils。作为旁注,您链接的问题是检查“.pyd”文件,但“.so”文件是有效的 ELF 文件,特别是要在运行时链接的二进制库。
  • @Marcin 我将 Paramiko 安装到 Lambda 上,方法是将它安装在我的脚本所在的目录中,然后压缩目录并将压缩文件上传到 Lambda。
  • 你必须为它创建层
  • @aviboy2006 谢谢。这意味着什么?

标签: python amazon-web-services aws-lambda paramiko


【解决方案1】:

我通过为 PySFTP/Paramiko 创建一个层解决了这个问题。

【讨论】:

    【解决方案2】:

    发生这种情况的原因是,当您运行“pip install paramiko”时,它会根据您的操作系统和计算机架构安装它。这可能与运行 Lambda 函数的架构不同。

    我建议按照本指南正确创建层以与 Lambda 函数一起发布:https://oznetnerd.com/2020/11/11/lambda-packaging-the-right-way/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2021-04-02
      • 2018-04-05
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多