经过多次呻吟和咬牙切齿,我想出了一个成功的解决方案。
rds_data(经 AWS Support 确认)仅支持 Aurora 数据库。希望 AWS 文件中提到了这一点。 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下载Oracle Instant Client Basic 和 SDK 包。
创建一个包含所有这些项目的 zip 文件(包括您自己的 Python 源代码)。为此,将 Oracle 即时客户端文件 libclntsh.so.11.1 重命名为 libclntsh.so,将 libocci.so.11.1 重命名为 libocci.so。
将 zip 上传到 S3 存储桶,因为直接部署限制为 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