AWS Lambda – No se puede abrir la biblioteca ‘FreeTDS’
Estoy enfrentando un problema con la configuración de FreeTDS en AWS Lambda. Actualmente estoy atascado con este error.
[ERROR] Error: ('01000', "[01000] [unixODBC][Driver Manager]No se puede abrir la librería 'FreeTDS': archivo no encontrado (0) (SQLDriverConnect)")
Mi configuración es la siguiente. El paquete Zip se construye usando Cloud9. El archivo lbtdsodbc.so
está presente en el directorio .ini
especificado.
Directorio desde el cual compilé esas dependencias (./configure, make, make install
):
user@user:/tmp/lambda_2 $ ls -la
total 12
drwxrwxr-x 9 ec2-user ec2-user 144 Dec 3 17:36 .
drwxrwxrwt 22 root root 4096 Dec 3 17:36 ..
drwxrwxr-x 2 ec2-user ec2-user 97 Dec 2 22:01 bin
drwxrwxr-x 7 ec2-user ec2-user 67 Dec 2 22:15 freetds
drwxrwxr-x 2 ec2-user ec2-user 210 Dec 2 22:01 include
drwxrwxr-x 3 ec2-user ec2-user 287 Dec 2 22:01 lib
drwxrwxr-x 2 ec2-user ec2-user 6 Dec 2 22:01 ODBCDataSources
-rw-rw-r-- 1 ec2-user ec2-user 150 Dec 3 17:17 odbc.ini
-rw-rw-r-- 1 ec2-user ec2-user 130 Dec 3 17:29 odbcinst.ini
drwxrwxr-x 3 ec2-user ec2-user 88 Dec 3 15:25 python
drwxrwxr-x 3 ec2-user ec2-user 17 Dec 2 22:01 share
odbc.ini
[FreeTDS]
Driver = FreeTDS
Description = Controlador alternativo para MS SQL Server
Trace = N
#Server = ntmachine.domain.com
#Port = 1433
TDS Version = 7.3
odbcinst.ini
[FreeTDS]
Description = FreeTDS
Driver = /lambda_2/freetds/lib/libtdsodbc.so
#Setup = ./freetds/lib/libtdsodbc.so
#UsageCount = 1
El paquete Zip creado con zip -r9
tiene la estructura anterior de -ls
.
Fragmento de código en Python:
conn = pyodbc.connect(f'DRIVER=FreeTDS;SERVER={self.server};PORT=1433;DATABASE={self.database};UID={self.username};PWD={self.password};TDS_Version=7.3;')
¡Se agradecerá cualquier ayuda!
davy.ai
Parece que el problema radica en que el controlador FreeTDS no es encontrado por el administrador de controladores ODBC. En el archivo odbcinst.ini, la ubicación del controlador se especifica como
/lambda_2/freetds/lib/libtdsodbc.so
, pero en la estructura de archivos mostrada, el directorio FreeTDS se encuentra en/tmp/lambda_2/freetds/
.Para solucionar el problema, intenta actualizar la ubicación del controlador en el archivo odbcinst.ini para que apunte a la ruta correcta:
/tmp/lambda_2/freetds/lib/libtdsodbc.so
. Una vez actualizado el archivo, intenta ejecutar nuevamente el fragmento de código Python.Si el problema persiste, verifica que el rol de ejecución de la función Lambda tenga permisos para acceder al archivo del controlador FreeTDS en la ubicación especificada.
Además, asegúrate de que el paquete
freetds-dev
esté instalado en tu entorno Cloud9 para compilar las dependencias. Para instalar el paquetefreetds-dev
, ejecuta el siguiente comando: