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

2024-10-02 16:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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添加到需求.txt用于本地调试的文件。在

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

^{pr2}$

我可以pip install pyodbc没有问题,但是由于某种原因,sam build失败了。在

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


Tags: lambda函数buildaws模板appsamtype
1条回答
网友
1楼 · 发布于 2024-10-02 16:30:42

对于本地调试,需要提取zip文件的内容并引用层的文件路径。在

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

enter image description here

提供文件夹路径模板.yaml文件

修改模板.yaml归档到

enter image description here

相关问题 更多 >