2016-06-09 188 views
1

我正在嘗試使用python連接到Oracle dbAWS Lambda。我設法打包cx_Oracle,但環境沒有找到依賴關係。AWS Python Lambda與Oracle

我壓縮了內容,其中包含cx_Oracle.socx_Oracle-5.2.1-py2.7.egg-info(在64位AWX Linux上創建)。我還將instantclient-basic-linux.x64-12.1.0.2.0.zip中的文件添加到該zip文件的local/lib中。

我得到的錯誤是

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

+0

它不值得問同一個問題上 - 請編輯您的[上一頁](http://stackoverflow.com/questions/37715080/oracle-driver-for-aws-python-lambda)問題 –

+1

上一個問題是關於違反政策的教程。你提供的答案是通用的aws教程,對這種情況沒有幫助。上面的問題詳細介紹了我採取的確切步驟和結果。請再次注意,我確實按照該教程作爲第一步沒有結果。 –

回答

2

解決啓動。在拉姆達拉鍊運行 ldd cx_Oracle.so| grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /destination 新增目的地所有這些文件到lib文件夾添加所有依賴

+0

您好@Thomas,我得到這個錯誤「」「」DPI-1047:無法加載64位Oracle客戶端庫:\「libclntsh.so:無法打開共享對象文件:沒有這樣的文件或目錄\」「」我有將instantclient_12_12中的所有文件放入lib文件夾和index.py以及與lib相同的cx_Oracle中,請分享您的zip文件或目錄結構。 –