Проблема установки PyODBC для локальной отладки с помощью AWS SAM CLI - PullRequest
1 голос
/ 17 мая 2019

Я разрабатываю лямбда-функцию в Python. Функция доступа к базе данных RDS с помощью библиотеки pyodbc. Для работы с библиотекой я использую слои. Мой шаблон 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 вручную, чтобы запустить его локально, но безуспешно.

...