[英]Python ldap3 connection fails 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 上,此連接都沒有問題。 我 go 在 conn 上進行搜索沒有問題。 但是,當我通過在本地運行的 ecr 在 ecs 上部署相同的容器時,出現此錯誤:
<class 'ldap3.core.exceptions.LDAPSocketOpenError'>, LDAPSocketOpenError('socket connection error while opening: [Errno 110] Connection timed out'), ('xxx.xxx.xxx.xxx', xxx))])
這可能是從 ssl 訪問 api 的副作用,但如果是這樣的話,我根本無法在語言環境中復制它。
這個錯誤只發生在 POST 請求上; 任何其他請求都按預期進行。
問題是由於Active Directory只能通過 vpn/代理訪問。 我使用的 gitpod 實例是公司提供的,因此它也具有對 AD 的網絡訪問權限。
這是通過使用默認訪問 this.network 的 VPC 解決的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.