Amazon Python 2.7 Lambda:DPI-1047:无法加载64位Oracle客户端库:" libclntsh.so"

时间:2018-01-18 21:16:08

标签: python oracle amazon-web-services lambda

这篇文章与我的经历最接近:Connecting to Oracle RDS using AWS Lambda using Python。但是,在完成所有步骤后,我无法获得成功的结果。

在us-west-2中的ami-aa5ebdd2的步骤:

sudo yum -y install gcc
mkdir oracle_connect
source oracle_connect/bin/activate
virtualenv oracle_connect
pip install cx_Oracle
wget https://github.com/bumpx/oracle-instantclient/raw/master/instantclient-basic-linux.x64-12.2.0.1.0.zip
mv instantclient_12_2/* oracle_connect/lib/
cd oracle_connect
vi test.py # insert python code here
cp /lib64/libaio.so.1.0.1 lib
ln -s ./lib/libclntsh.so.12.1 ./lib/libclntsh.so
ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so.1
ln -s ./lib/libaio.so.1.0.1 ./libaio.so.1.0.1
ln -s ./lib/libaio.so.1.0.1 ./libaio.so.1.0.1
cd lib/python2.7/site-packages/
zip -r ~/oracle_connect.zip * .*
cd ~/oracle_connect/lib64/python2.7/site-packages/
zip -r ~/oracle_connect.zip * .*
cd ~/oracle_connect
zip --symlinks -r9 ~/oracle_connect.zip lib/*
zip ~/oracle_connect.zip test.py

测试代码只是lambda处理程序中的cx_Oracle.connect(connection_string)。

有什么建议吗?我尽量提供尽可能详细的信息。当我尝试在本地运行时,它在我设置之前不会工作: export LD_LIBRARY_PATH = / home / ec2-user / oracle_connect / lib

所以我在lambda上设置环境变量为: LD_LIBRARY_PATH:/ var / task / lib

1 个答案:

答案 0 :(得分:1)

所以我终于开始工作了。我从Oracle重新下载了instantclient-basic-linux.x64-12.2.0.1.0.zip:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html。我将文件复制到〜/ oracle_connect / lib文件夹中。我将符号链接更改为/ var / task / lib /(filename)而不是相对路径,并删除了lambda环境变量。现在一切都有效。