我在VPC内设置了一个Lambda。我有两个专用子网,我想访问本地DB,安全组已打开所有22端口的入站tcp连接,而所有出站均打开。这是我的lambda:
代码:
{{1}}
我的lambda的文件结构如下:
/ 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
谢谢!