4

我正在尝试从 lambda 函数连接到基于 Oracle 引擎的 RDS 并执行简单的选择查询。我已完成以下操作:

  • 下载了 instantclient-sdk-linux.x64-18.3.0.0.0dbru.zip 和 instantclient-basic-linux.x64-18.3.0.0.0dbru.zip
  • 创建文件夹结构~/lambda/lib
  • 提取 lib 文件夹中的 zip 文件,保持 zip 文件的目录结构完整(我不确定这是否是正确的方法。)
  • 下载 libaio1_0.3.110-5_amd64.deb 文件并解压找到两个 .xz 文件,将它们也解压并得到libaio.so.1andlibaio.so.1.0.1文件。
  • libaio.so.1从那里复制到~/lambda/lib
  • 使用中创建了as的共生链接libaio.so.1libaio.so但打开时写道链接已损坏,libaio.so.1.0.1 不存在)~/lambdaln -s libaio.so.1.0.1 libaio.solibaio.so
  • cx_Oracle使用 pip in ~/lambda( pip install cx_Oracle -t .)安装
  • 名为 index.py 的 Lambda 函数(存储在 中~/lambda)如下:

    import os import json import cx_Oracle def handler(event, context): message = "" cursor = None connection = None
    try: connection = cx_Oracle.connect("username", "password", "endpoint_of_rds_instance:port_no/ORCL") cursor = connection.cursor() cursor.execute("SELECT LOGIN-ID from USER_INFO where USER_ID=3972") 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 *

  • 无法直接上传 zip,因为文件大小限制为 10 MB,此 zip 文件为 96 MB。在使用 S3 时,它说超出了解压缩文件的大小限制,因为我的 lambda 文件夹的大小超过 200 MB。

4

0 回答 0