Я настраиваю лямбду внутри VPC.У меня есть две частные подсети, и я хочу получить доступ к локальной БД, группа безопасности имеет все входящие соединения TCP для открытого порта 22 и все исходящие открытые.Вот моя лямбда:
- Время выполнения: 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
Код:
import cx_Oracle
import os
host_file = '''
{} localhost
'''
with open('/tmp/HOSTALIASES', 'w') as hosts_file:
hosts_file.write(host_file.format(os.uname()[1]))
def lambda_handler(event, context):
con = cx_Oracle.connect('user_name/password@10.xxx.xxx.xxx:1521/service_name
Файловая структура моей лямбды выглядит следующим образом:
- access_db.py
- / lib
- cx_Oracle-7.0.0.dist-info
- cx_Oracle-doc
- cx_Oracle.so
/ lib содержит мгновенный клиент оракула + sdk + libaio
Используя тот же код, я могу подключиться к базе данных из EC2.(тот же vpc, та же самая частная подсеть, та же самая настройка в группе безопасности).Я указал LD_LIBRARY_PATH и ORACLE_HOME на папку lib.Теперь ЕДИНСТВЕННОЕ различие, которое я вижу, состоит в том, что на EC2 я заполняю свой / etc / host своим псевдонимом oracle DB IP, и если я их удаляю, у меня возникает та же ошибка.
Так что я думаю, чтопроблема оттуда.Но в лямбде я пытаюсь использовать / tmp / HOSTALIASES (потому что кажется, что мы не можем редактировать / etc / hosts), и это не работает.(Я также поместил переменную окружения HOSTALIASES = / tmp / HOSTALIASES в мое облачное образование.
Теперь я пытаюсь прекратить использование / etc / host на моем ec2 и скопировать весь контент в / tmp / HOSTALIASES. Но этотерпеть неудачу, как в лямбде. Кто-нибудь знает, как я могу сделать эту работу? и почему мне нужно заполнить мой файл / etc / host, даже если я использую IP своей базы данных напрямую.
РЕДАКТИРОВАТЬ: OracleБД, к которой я подключаюсь, находится в кластере. Вероятно, это связано с этим: https://www.oracle.com/webfolder/community/oracle_database/3961128.html
Спасибо!