无法使用AWS Lambda加载模块

问题描述 投票:0回答:1

我正在尝试使用自定义模块(例如 pyodbc)运行 AWS Lambda 函数,因此我使用层通过 zip 文件包含它们。我正在关注这些教程:

https://docs.aws.amazon.com/lambda/latest/dg/python-layers.html https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html

但是,在测试我的功能时,我不断收到错误消息:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'pyodbc'",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "",
  "stackTrace": []
}

我尝试过以下方法:

  1. 使用“pip install --target ./package pyodbc”通过项目目录创建部署包,将其压缩并上传到Layers。这会导致 zip 中出现以下目录结构:
./
  pyodbc-5.2.0.dist-info/

这不起作用,所以我接下来尝试。

  1. 在环境中使用“pip install --target pyodbc”使用虚拟环境创建部署包。这会导致 zip 中出现以下目录结构:
python/
  Lib/
    site-packages/
      pyodbc-5.2.0.dist-info/

这不起作用。我看到其他线程似乎在“site-packages”之前有一个额外的 python 子文件夹,所以我还测试了以下目录结构并上传了 zip:

python/
  Lib/
    python3.11/
      site-packages/
        pyodbc-5.2.0.dist-info/

我还在 StackExchange 中查看了这些文章,但这些解决方案对我不起作用(抱歉,我无法发布完整链接,因为我的问题被标记为垃圾邮件)

62404733/无法从-aws-lambda-层导入模块

75419822/无法导入模块-aws-lambda-函数

67062313/无法从-aws-lambda 中的层导入包

76105233/导入模块在使用层无法找到包时无法在 aws-lambda 中工作

67118576/aws-lambda-无法从层导入模块

55695187/在 lambda 层中导入库

如有任何帮助或意见,我将不胜感激。抱歉,如果这看起来微不足道,我对 Lambda 层有点陌生。

amazon-web-services aws-lambda importerror aws-lambda-layers
1个回答
0
投票

压缩后的结构应如下所示:

python/
  lib/
    python3.11/
      site-packages/
        pyodbc/
        pyodbc-5.2.0.dist-info/

您是否通过提取 Layer zip 文件并检查结构来验证 pyodbc 库在 Layer 中可用?

© www.soinside.com 2019 - 2024. All rights reserved.