私信  •  关注

wdtj

wdtj 最近创建的主题
wdtj 最近回复了
5 年前
回复了 wdtj 创建的主题 » 在Python中从AWS Lambda访问Oracle

经过长时间的呻吟和咬牙切齿,我想出了一个成功的解决办法。

rds_data(由AWS支持部门确认)仅支持Aurora数据库。希望美国焊接学会的文件提到这一点。8{(>

感谢上面的答案以及 Jason Landrey 关于解决方案的提示。

要访问RDS/Oracle,需要使用cx_Oracle。但是等等,还有更多。

cx_Oracle不在标准的Lambda环境中,所以您需要自带。我的开发环境是在Windows上,但是Lambda环境是Linux。所以,你需要下载并安装到你的打包目录中 https://pypi.org/project/cx-Oracle/#files . 本地安装:

pip install cx_Oracle-7.1.2-cp37-cp37m-manylinux1_x86_64.whl -t .

您将在中看到多个文件。然后您需要找到一个Linux系统并下载/lib64/libaio.so.1.0.1并在打包目录中调用它libaio.so.1。
然后您需要从 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html .

创建包含所有这些项的zip文件(包括您自己的Python源代码)。为此,请将Oracle即时客户端文件libclntsh.so.11.1重命名为libclntsh.so,将libocci.so.11.1重命名为libocci.so。

将zip上传到S3 bucket,因为直接部署限制为66mb,而且这个zip要大一些。

创建一个具有适当IAM权限和VPC访问权限的Lambda,安装包,应该可以正常运行。

我发现如果你不包括所有的即时客户端文件,你就会得到关于丢失时区和NLS信息的Oracle错误。

zip内容列表(对于我,YMMV):

    7996693  08/24/2013 12:30   libnnz11.so
          0  03/11/2019 16:10   cx_Oracle-7.1.1.data/
          0  03/11/2019 16:10   cx_Oracle-7.1.1.data/data/
          0  03/11/2019 16:10   cx_Oracle-7.1.1.data/data/cx_Oracle-doc/
          0  03/11/2019 16:10   cx_Oracle-7.1.1.dist-info/
       1325  03/13/2019 12:35   Email.py
       1805  02/19/2019 21:11   cx_Oracle-7.1.1.data/data/cx_Oracle-doc/LICENSE.txt
        163  02/19/2019 21:11   cx_Oracle-7.1.1.data/data/cx_Oracle-doc/README.txt
        851  02/19/2019 21:11   cx_Oracle-7.1.1.dist-info/METADATA
        628  02/19/2019 21:12   cx_Oracle-7.1.1.dist-info/RECORD
        109  02/19/2019 21:12   cx_Oracle-7.1.1.dist-info/WHEEL
         10  02/19/2019 21:11   cx_Oracle-7.1.1.dist-info/top_level.txt
    2270301  02/19/2019 21:11   cx_Oracle.cpython-37m-x86_64-linux-gnu.so
       2140  03/13/2019 14:21   getSecrets.py
       5560  03/12/2019 08:48   libaio.so.1
   53865194  08/24/2013 12:30   libclntsh.so
  118738042  08/24/2013 12:30   libociei.so
       7633  03/13/2019 16:39   scheduleReports.py