psycopg2.OperationalError
이후에 같은 에러가 발생했을 때 스스로 삽질을 하지 않기 위해 기록 😇
상황 :
AWS EB 환경 복제 후 deploy했을 때 에러 발생
확인한 로그 파일 :
cfn-init-cmd.log
로그 파일 내 에러 메시지 :
manage.py:22: UserWarning: Not reading .env - it doesn't exist.
2022-03-20 03:59:45,821 P3687 [INFO] dotenv.read_dotenv()
2022-03-20 03:59:45,821 P3687 [INFO] Traceback (most recent call last):
2022-03-20 03:59:45,821 P3687 [INFO] File "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
2022-03-20 03:59:45,821 P3687 [INFO] self.connect()
2022-03-20 03:59:45,821 P3687 [INFO] File "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/db/backends/base/base.py", line 195, in connect
2022-03-20 03:59:45,821 P3687 [INFO] self.connection = self.get_new_connection(conn_params)
2022-03-20 03:59:45,821 P3687 [INFO] File "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
2022-03-20 03:59:45,822 P3687 [INFO] connection = Database.connect(**conn_params)
2022-03-20 03:59:45,822 P3687 [INFO] File "/var/app/venv/staging-LQM1lest/lib64/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
2022-03-20 03:59:45,822 P3687 [INFO] conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
2022-03-20 03:59:45,822 P3687 [INFO] psycopg2.OperationalError: could not connect to server: Connection timed out
원인 : RDS의 보안 그룹 규칙(Security group rules)에서 inbound rule을 잘못 설정했기 때문. 즉 Elastic Beanstalk와 EC2는 같은 보안 그룹에 속해있지만 RDS의 경우 해당 그룹에 속해 있지 않기 때문에 서로 통신을 할 수 없는 상황 발생한 것. 이로 인해 psycopg2.operation 에러가 발생.
해결 :
step 1.
AWS RDS로 이동하여 보안 그룹 규칙 선택 (보통 default로 시작)
step 2.
보안그룹 ID 선택
step 3.
'인바운드 규칙 편집' 클릭
step 4.
아래와 같이 모든 트래픽으로, elastic beanstalk 환경을 선택.
Author And Source
이 문제에 관하여(psycopg2.OperationalError), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jellybread_dev/psycopg2.OperationalError저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)