AWS Lambda,在prem DB上,/ etc / host,ORA-12545

时间:2018-12-13 00:09:36

标签: python oracle amazon-web-services

我在VPC内设置了一个Lambda。我有两个专用子网,我想访问本地DB,安全组已打开所有22端口的入站tcp连接,而所有出站均打开。这是我的lambda:

  • 运行时:Python 2.7
  • 依赖性:cx_Oracle 7.0.0
  • Oracle Instant Client:Instantclient-basiclite-linux.x64-18.3.0.0.0dbru.zip
  • Oracle Instant Client SDK:Instantclient-sdk-linux.x64-18.3.0.0.0dbru.zip
    • Libaio库

代码:

{{1}}

我的lambda的文件结构如下:

  • access_db.py
  • / lib
  • cx_Oracle-7.0.0.dist-info
  • cx_Oracle-doc
  • cx_Oracle.so

/ lib包含oracle Instant Client + SDK + libaio

使用相同的代码,我能够从EC2连接到数据库。 (相同的vpc,相同的专用子网,安全组上的相同设置)。我将LD_LIBRARY_PATH和ORACLE_HOME指向lib文件夹。现在,我可以看到的唯一区别是,在EC2上,我用oracle DB IP别名填充了/ etc / host,并且如果删除了它们,则会出现相同的错误。

所以我认为问题出在那儿。但是在lambda上,我尝试使用/ tmp / HOSTALIASES(因为似乎我们无法编辑/ etc / hosts),并且它不起作用。 (我还在我的云计算中放置了一个环境变量HOSTALIASES = / tmp / HOSTALIASES。

现在,我尝试停止在ec2上使用/ etc / host并将所有内容复制到/ tmp / HOSTALIASES。但是它失败了,就像在lambda中一样。有人知道我该怎么做吗?以及为什么即使我直接使用数据库的IP也需要填充/ etc / host文件。

编辑:我要连接的Oracle DB在集群中。所以可能与此有关:https://www.oracle.com/webfolder/community/oracle_database/3961128.html

谢谢!

0 个答案:

没有答案