как запросить базу данных RDS SQL Server в AWS lambda с помощью python?

#python #aws-lambda #amazon-rds

#python #aws-lambda #amazon-rds

Вопрос:

Я пытаюсь подключиться к экземпляру AWS RDS SQL Server для запроса таблицы из AWS Lambda с помощью скрипта python. Но я не вижу никакого API AWS, поэтому, когда я пытаюсь использовать «import pyodbc», я вижу приведенную ниже ошибку.

Невозможно импортировать модуль ‘lambda_function’: нет модуля с именем ‘pyodbc’

Подключение:

  cnxn = pyodbc.connect("Driver={SQL Server};"
                        "Server=data-migration-source-instance.asasasas.eu-east-1.rds.amazonaws.com;"
                        "Database=sourcedb;"
                        "uid=source;pwd=source1234")
 

Есть какие-либо указания по тому, как запрашивать RDS SQL Server?

Ответ №1:

Ошибка, которую вы получаете, означает, что в лямбде нет pyodbc модуля.

Вы должны прочитать об управлении зависимостями в AWS Lambda. В основном существует две стратегии включения зависимостей в ваше развертывание — слои Lambda или zip с пакетом развертывания.

Если вы используете бессерверную платформу, Serverless-python-requirements это отличный пакет для управления вашими зависимостями, позволяющий выбирать стратегию управления зависимостями с минимальными изменениями в вашем приложении.

Ответ №2:

вам необходимо загрузить зависимости лямбды вместе с кодом. Если вы развернете свою лямбду вручную (т. Е. Создадите zip-файл / прямо из консоли), вам нужно будет подключить pyodb библиотеку. (Более подробная информация доступна здесь: https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependencies ).

Если вы используете любой другой инструмент развертывания (бессерверный, SAM, chalice), это будет намного проще: https://www.serverless.com/plugins/serverless-python-requirements , https://aws.github.io/chalice/topics/packaging.html#rd-party-packages , https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-build.html