我正在尝试使用AWS lambda和python连接到Oracle。
这些是我遵循的步骤。(一切都完成了EC2实例)
下载了Instantclient-basic-linux.x64-12.2.0.1.0.zip和 Instantclient-sdk-linux.x64-12.2.0.1.0.zip
创建了此文件夹结构 ~/lambda/lib/
~/lambda/lib/
zip
libaio.so.1.0.1
/lib64/
libaio.so
~/lambda
cx_Oracle
index.py
~lambda
`
import cx_Oracle def handler(event, context): message = "" cursor = None connection = None try: connection = cx_Oracle.connect("USERNAME", "PASSWORD", "DOMAIN/orcl") cursor = connection.cursor() cursor.execute("""QUERY""") except Exception as e: message += " {Error in connection} " + str(e) finally: if cursor: cursor.close() if connection: connection.close() return {'message' : message}
zip -r9 ~/upload.zip *
在AWS lambda上运行代码后,它将出现以下错误。
Error while trying to retrieve text for error ORA-01804
我尝试设置ENV ORACLE_HOME = / var / task和/ var / task / lib,但是没有用
我通过简单地使用符号链接正确压缩文件来解决了这个问题
首先,我创建了三个符号链接(关于上面的目录结构):
ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so.1
ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so
ln -s ./lib/libaio.so.1.0.1 ./libaio.so.1.0.1
ln -s ./lib/libclntsh.so.12.1 ./lib/libclntsh.so
然后我不正确地压缩了它,就像这样:
zip --symlinks -r9 ~/lamda.zip *
有效!然后正确地希望它对某人有帮助。