gist.github.com/carlochess/658a98589709f46dbb3d20502e48556b
трял, пытаясь подключиться к SQL Server, используя функции AWS Lambda в течение длительного времени.
Для этого я пытаюсь использовать любую библиотеку (пробовал с pyodbc, pypyodbc и т. Д.), Упаковывая все в zip-файл и загружая код.
Код практически одинаков для каждой библиотеки, но ошибки разные.
Код:
import pypyodbc
def lambda_handler(event, context):
conn = pypyodbc.connect('DRIVER={SQL Server};'
'SERVER=1.1.1.1;'
'DATABASE=dbname;'
'UID=user;'
'PWD=pwd')
cur = conn.cursor()
cur.execute("SELECT * FROM Table")
item_count = 0
for row in cur:
item_count += 1
print(item_count)
cur.close()
conn.close()
return item_count
Общие проблемы, которые я рассмотрел: - Я добавляю в zip содержимое проекта, а не папку. - Я также добавляю в zip-файл библиотеки, необходимые для запуска кода.
Если я попытаюсь использовать pyodbcПочтовый индекс, который я загружаю, выглядит так:
.idea (dir)
pyodbc (dir)
lambda_function.py
pyodbc.pyd
Ошибка, которую я получаю:
Unable to import module 'lambda_function': No module named pyodbc
После долгих поисков по этому поводу я не смог найти ничего, что могло бы помочь. Только один комментарий, в котором говорилось, что pyodbc необходимо установить в среде linux, чтобы лямбда-функция работала. Но у меня нет этой окружающей среды, также я не знаю, исправит ли это это.
Если я попытаюсь использовать pypyodbcПочтовый индекс, который я загружаю, выглядит так:
Ошибка, которую я получаю:
module initialization error: 'ODBC Library is not found. Is LD_LIBRARY_PATH set?'
Для этого я попытался установить несколько пакетов python, предложенных другими сообщениями stackoverflow (python-pyodb, unixodbc), но каждый раз мне не удавалось.
Затем был один комментарий, в котором говорилось: «Обязательно поместите собственные библиотеки ODBC в папку lib в вашем пакете развертывания zip»
Может быть, это какая-то помощь? Я не знаю, как получить родные библиотеки ODBC ..
Ох, и последнее. Обе библиотеки работают, если я запускаю их с моей локальной машины. Я могу получить доступ к целевому серверу. Это не удается, если я делаю это из лямбда-функции.
Надеюсь, кто-то может помочь мне и, видимо, весь интернет с этим.