繁体   English   中英

使用 AWS SAM CLI 安装 PyODBC 以进行本地调试时出现问题

[英]Problem installing PyODBC for local debugging with AWS SAM CLI

我正在用 Python 开发一个 lambda 函数。 该函数使用pyodbc 库访问RDS 数据库。 为了使用我正在使用层的库。 我的 SAM 模板如下所示,部署到 AWS 时一切正常。

Resources:

    # ODBC Lambda Layer
    PyODBCLayer:
      Type: AWS::Serverless::LayerVersion
      Properties:
        ContentUri: pyodbc_layer.zip

    # Lambda function
    TaskIDFunction:
        Type: AWS::Serverless::Function
        Properties:
            CodeUri: taskid/
            Handler: app.lambda_handler
            Layers:
              - !Ref PyODBCLayer
            Role: !GetAtt TaskIDFunctionIamRole.Arn
            Runtime: python3.6
            Environment:
              Variables:
                ODBCINI: /opt/bin/odbcinst.ini
                ODBCSYSINI: /opt/bin
            Events:
              SendTaskID:
                Type: Api 
                Properties:
                      Path: /task/{id}
                      Method: get

当我尝试使用sam build && sam local invoke -d 5890 TaskIDFunction --event myEvent.json在本地运行时,问题就开始了

我收到错误消息Unable to import module 'app': No module named 'pyodbc'我理解,通常解决方案是将pyodbc添加到 requiremens.txt 文件以进行本地调试。

但是,在我完成之后, sam build命令失败并显示以下消息

Build Failed
Error: PythonPipBuilder:ResolveDependencies - {pyodbc==4.0.26(wheel)}

我可以毫无问题地pip install pyodbc但由于某种原因, sam build失败。

我尝试了各种组合,从模板中删除图层并手动安装 PyODBC 以使其在本地运行,但没有成功。

我没有足够的声誉来发表评论,所以:

我得到了同样的错误。 想知道您是否可以改进它,如果可以,您是如何做到的?

对于本地调试,您需要解压缩 zip 文件的内容并引用图层的文件路径。

我创建了一个名为 lambda-layers 的文件夹并提取了文件夹中的 zip 文件内容

在此处输入图片说明

在 template.yaml 文件中给出文件夹路径

将您的 template.yaml 文件修改为

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM