Я использую кластер базы данных Amazon Web Services RDS Aurora 5.6. Есть пара лямбд, говорящих с этими экземплярами базы данных, все написаны на python. Теперь все работало хорошо, но внезапно, поскольку пару дней назад код Python иногда начинает выдавать следующую ошибку:
[ОШИБКА] InterfaceError: 2003: Canне подключаться к серверу MySQL в 'CLUSTER-DOMAIN: 3306' (-3 Временный сбой в разрешении имени)
Это происходит в 1 из 1000 новых подключений или около того. Что интересно, я не касался всего этого сервиса в последние пару дней (с тех пор как он начал происходить). Все лямбды используют официальный клиент MySQL-коннектора и подключаются при каждой инициализации с помощью следующего фрагмента:
import mysql.connector as mysql
import os
connection = mysql.connect(user=os.environ['DATABASE_USER'],
password=os.environ['DATABASE_PASSWORD'],
database=os.environ['DATABASE_NAME'],
host=os.environ['DATABASE_HOST'],
autocommit=True)
Чтобы исключить, что это проблема в клиенте Python MySQL, я добавил следующее, чтобы решить хост:
import os
import socket
host = socket.gethostbyname(os.environ['DATABASE_HOST'])
Также здесь иногда я получаю следующую ошибку:
[ОШИБКА] gaierror: [Errno -2] Имя или служба не известны
Теперь я подозреваю, что это как-то связано с DNS, но, поскольку я просто использую конечную точку кластера, я мало что могу с этим поделать. Что интересно, я также недавно столкнулся с точно такой же проблемой в другом регионе, с такой же настройкой (кластер Aurora 5.6, лямбда в питоне, подключенном к нему), и там происходит то же самое.
Я попытался перезапустить все машины в кластере, но проблема все еще возникает. Это действительно проблема DNS? Что я могу сделать, чтобы это не произошло?