经过长时间的呻吟和咬牙切齿,我想出了一个成功的解决办法。
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