Как создать пакет загрузки для функции AWS Lamba для подключения к базе данных Oracle RDS? Лямбда-язык Python 3.6. Моя среда разработки - Windows НЕ Linux.
Когда я пытаюсь, я получаю ошибку:
DPI-1047: 64-bit Oracle Client library cannot be loaded: "libaio.so.1: cannot open shared object file: No such file or directory
Это странно, потому что, насколько я понимаю, libaio.so является частью системы amazon linux, и поэтому следует найти правильную версию libaio.so.
Я сделал следующие шаги, чтобы собрать свой лямбда-пакет:
/lib
/
/
LD_LIBRARY_PATH
включает /lib
а переменная TNS_ADMIN
указывает на каталог /
Вот фрагмент кода Python, внутри лямбда для достижения этого:
oraclePath = os.environ['LAMBDA_TASK_ROOT'] + '/lib'
if oraclePath not in os.environ['LD_LIBRARY_PATH'].split(':'):
os.environ['LD_LIBRARY_PATH'] = oraclePath + ':' + os.environ['LD_LIBRARY_PATH']
if ('TNS_ADMIN' not in os.environ) or (os.environ['TNS_ADMIN'] != os.environ['LAMBDA_TASK_ROOT']):
os.environ['TNS_ADMIN'] = os.environ['LAMBDA_TASK_ROOT']
libclntsh.so.18.1
в libclntsh.so
. Аналогично для libocci.so
и libclntshcore.so
Вот два похожих SO вопроса с ответами, которые не спомогли мне или не применимы к моей ситуации:
AWS Lambda не может подключиться к Oracle Instant Client. Решение Пола выполняется на шаге 5 выше.
Решение AWS Python Lambda с Oracle Thomas не помогает мне в моей ситуации. Это команды Linux. Мне нужно решение для Windows.
Возможно, мне нужно спросить: как разработчик Windows получает правильную версию libaio.so.1 для среды Amazon Linux Lambda и где этот файл должен быть помещен в пакет lambda? Любое решение, которое включает команды bash, не помогает.
Поскольку я столкнулся с той же проблемой, вы можете найти необходимые библиотеки здесь: https://pkgs.org/download/libaio (например, пакет Arch linux)
Затем распакуйте файлы из этого пакета в папку /lib вашего пакета lambda.
apt-get install libaio-dev
?