簡體   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