Python ldap3 connection fail when django app is deployed on ecs, but not on local

У меня есть django api, который передает данные из источника Active directory и обрабатывает их. Мое подключение выглядит примерно так

from ldap3 import Server, Connection

        
server = Server(url, get_info=ALL)

conn = Connection(server, username, password, auto_bind=True)

Я поместил это приложение в контейнер, dockerfile прост и выглядит так

FROM python:3.9

EXPOSE 8002
# Install Dependencies   
ADD requirements.txt .
RUN pip install -r requirements.txt
ADD . .
CMD ./server.sh

Server.sh также довольно прост:

#!/usr/bin/env bash
aws s3 cp s3://some_creds .

python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:80

Теперь на локальной сети и на gitpod это соединение работает без проблем. Я продолжаю выполнять поиск на этом соединении без проблем. Однако, когда я развертываю тот же контейнер на ecs через ecr, который я запускал на local, я получаю следующую ошибку:

<class 'ldap3.core.exceptions.LDAPSocketOpenError'>, LDAPSocketOpenError('socket connection error while opening: [Errno 110] Connection timed out'), ('xxx.xxx.xxx.xxx', xxx))])

Возможно, это побочный эффект доступа к api через ssl, но если это так, то я просто не могу воспроизвести это на локалке.

Эта ошибка возникает только при POST-запросах; любой другой запрос проходит, как и ожидалось.

Проблема была вызвана тем, что доступ к Active Directory осуществлялся только через vpn/proxy. Экземпляр gitpod, который я использовал, был предоставлен компанией, поэтому он также имел сетевой доступ к AD.

Это было решено с помощью VPC, который имел доступ к этой сети по умолчанию.

Вернуться на верх