Я пытаюсь подключиться к Oracle db из AWS Lambda
с помощью python. Мне удалось пакет cx_Oracle, но среда не находит зависимости.
Я закрепил содержимое, содержащее cx_Oracle.so
и cx_Oracle-5.2.1-py2.7.egg-info
(созданный на 64-битном AWX Linux). Я также добавил файлы из instantclient-basic-linux.x64-12.1.0.2.0.zip
в local/lib в этот zip файл.
Ошибка, которую я получаю,
import cx_Oracle
ImportError: libaio.so.1: cannot open shared object file: No such file or directory
Я динамически изменяю переменные среды в python следующим образом:
oracledir = os.path.join(os.getcwd(), 'local', 'lib')
libdir = os.environ['LD_LIBRARY_PATH'] + ":" + os.path.join(os.getcwd(), 'local', 'lib')
command = 'LD_LIBRARY_PATH={} ORACLE_HOME={} python OracleWorker.py "{}"'.format(libdir, oracledir, args)
subprocess.call(command, shell=True)
OracleWorker.py начинается с import cx_Oracle
Решенный. Добавлены все зависимости путем запуска ldd cx_Oracle.so| grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /destination
Добавлены все файлы в папку lib в lambda zip