Python — проблемы с загрузкой модуля отладкиPython

Программы на Python
Anonymous
Python — проблемы с загрузкой модуля отладки

Сообщение Anonymous »

Я пытаюсь развернуть лямбда-функцию AWS Python со слоем pyodbc для доступа к базе данных. Когда я запускаю функцию и пытаюсь подключиться к базе данных, я получаю сообщение об ошибке, указывающее, что атрибут подключения не существует.
Я развертываю свою функцию через Terraform.
Импорт pyodbc завершается нормально, что говорит мне о том, что Lambda нашла модуль. Структура папок слоев следующая...

Код: Выделить всё

/lib
/msodbcsql18
/python
/python/pyodbc-5-1.0.dist-info
/python/pyodbc.cpython-38-x86_64-linux-gnu.so
/python/pyodbc.pyi
/odbc.ini
/odbcinst.ini
Вот код функции...

Код: Выделить всё

import pyodbc
import os
import platform

def lambda_handler(event, context):

context.log(f"Platform: {platform.platform()}\n")

for item in os.listdir("/opt"):
context.log(f"ODBC Files: {item}\n")

conn_str = 'DRIVER={0};SERVER={1};UID={2};PWD={3};Port={4};TrustServerCertificate=yes'.format(
"{ODBC Driver 18 for SQL Server}",
os.environ["server_name"],
os.environ["user_name"],
os.environ["password"],
os.environ["ip_port"]
)

try:
context.log("[INFO] Attempting database connection\n")
db = pyodbc.connect(conn_str)
except Exception as e:
context.log(f"[ERROR] Connection failed - {e}\n")
return
Я предполагаю, что, поскольку в ошибке говорится, что атрибут подключения pyodbc не существует, драйвер ODBC не имеет значения. Другими словами, если модуль pyodbc загружается неправильно, он не сможет загрузить драйвер ODBC.
Лямбда-платформа — «Linux-5.10.209-218.812.amzn2. x86_64-x86_64-with-glibc2.2.5". Я думаю, что это соответствует двоичному файлу pyodbc «pyodbc.cpython-38-x86_64-linux-gnu.so», поэтому я совершенно уверен, что здесь нет проблем с совместимостью платформ или архитектуры. Однако я не знаю, как определить, действительно ли загрузился двоичный файл pyodbc или при его загрузке возникли ошибки.
Я провел пару дней, возясь с различными слоями pyodbc на GitHub и другие блоги, но мне не повезло.
Оооо, что я делаю не так? Верно ли мое предположение, что драйвер ODBC на данном этапе не имеет значения?

Подробнее здесь: https://stackoverflow.com/questions/781 ... ing-issues

Вернуться в «Python»