小编典典

连接到Oracle RDS

python

我正在尝试使用AWS lambda和python连接到Oracle。

这些是我遵循的步骤。(一切都完成了EC2实例)

  1. 下载了Instantclient-basic-linux.x64-12.2.0.1.0.zip和
    Instantclient-sdk-linux.x64-12.2.0.1.0.zip

  2. 创建了此文件夹结构 ~/lambda/lib/

  3. 提取zip文件在~/lambda/lib/
  4. libaio.so.1.0.1从复制/lib64/~/lambda/lib/
  5. 创建符号链接libaio.so.1.0.1libaio.so~/lambda
  6. 使用安装cx_Oracle~/lambda
  7. 写在下面的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}

`

  1. 然后使用 zip -r9 ~/upload.zip *

在AWS lambda上运行代码后,它将出现以下错误。

Error while trying to retrieve text for error ORA-01804

我尝试设置ENV ORACLE_HOME = / var / task和/ var / task / lib,但是没有用


阅读 214

收藏
2021-01-16

共1个答案

小编典典

我通过简单地使用符号链接正确压缩文件来解决了这个问题

首先,我创建了三个符号链接(关于上面的目录结构):

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 *

有效!然后正确地希望它对某人有帮助。

2021-01-16