从AWS中的Lambda函数连接到Oracle RDS

时间:2019-01-13 10:56:11

标签: python aws-lambda amazon-rds instantclient

我试图通过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.1libaio.so.1.0.1文件。
  • 从那里复制libaio.so.1~/lambda/lib
  • 使用libaio.so.1libaio.so中以~/lambda的形式创建ln -s libaio.so.1.0.1 libaio.so的共生链接(但是打开时的libaio.so表示链接已断开,libaio.so .1.0.1不存在)
  • 使用pip在cx_Oracle~/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 *

  • 将其压缩
  • 由于文件大小限制为10 MB,并且此zip文件为96 MB,因此无法直接上传zip。使用S3时,它表示超过解压缩文件的大小限制,因为我的lambda文件夹的大小超过200 MB。

0 个答案:

没有答案