如何构建AWS Lambda函数的上载包以连接到Oracle RDS数据库? lambda语言是Python 3.6。我的开发环境是Windows NOT 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。
我做了以下步骤来构建我的lambda包:
/lib
中/
中/
中LD_LIBRARY_PATH
包含/lib
和环境变量TNS_ADMIN
指向目录/
这里是python代码的片段,在lambda中实现:
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问题,答案对我不起作用,或者不适用于我的情况:
也许我需要问一下:Windows开发人员如何为Amazon Linux Lambda环境获取正确版本的libaio.so.1,以及该文件应该放在lambda包中的哪个位置?任何涉及bash命令的解决方案都没有帮助。
由于我遇到了同样的问题,你可以从这里找到所需的库:https://pkgs.org/download/libaio(例如Arch linux包)
然后将该包中的文件解压缩到lambda包的/ lib文件夹中。