连接到 Oracle RDS

Say*_*een 6 python cx-oracle amazon-web-services amazon-rds aws-lambda

我正在尝试使用 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.1from复制/lib64/~/lambda/lib/
  5. 创建了libaio.so.1.0.1as libaio.soin 的符号链接~/lambda
  6. 使用 pip 安装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}
Run Code Online (Sandbox Code Playgroud)

`

  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 但没有奏效

我看了下面的答案,但还没有找到帮助

尝试为错误 ORA-01019 检索文本时出错

带有 node-oracle 的 Oracle:尝试检索错误 ORA-01804 的文本时出错

Say*_*een 3

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

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

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 *

有效!那么正确。希望它对某人有帮助。