반응형

아래는 Google CoLab에서 AWS RDS MySQL DB에 접속하려고 할때 작성한 코드와 발생 에러 메세지입니다.

 

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://id:pwd@dev.cluster-cziqwp.ap-northeast-2.rds.amazonaws.com:3306/dbname', pool_pre_ping=True)
 
engine = engine.execution_options(autocommit=True)
 
db_conn = engine.connect()
 
result = db_conn.execution_options(autocommit=True).execute('select count(*) from dbname.t where batch_date = "20231121";')
print("result: ", result)
 
result.close()

---------------------------------------------------------------------------
TimeoutError                              Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/pymysql/connections.py in connect(self, sock)
    612                         try:
--> 613                             sock = socket.create_connection(
    614                                 (self.host, self.port), self.connect_timeout, **kwargs

44 frames
TimeoutError: timed out

During handling of the above exception, another exception occurred:

OperationalError                          Traceback (most recent call last)
OperationalError: (2003, "Can't connect to MySQL server on 'dev.cluster-czafliq9kcwp.ap-northeast-2.rds.amazonaws.com' (timed out)")

The above exception was the direct cause of the following exception:

OperationalError                          Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/pymysql/connections.py in connect(self, sock)
    662                 if DEBUG:
    663                     print(exc.traceback)
--> 664                 raise exc
    665 
    666             # If e is neither DatabaseError or IOError, It's a bug.

OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'dev.cluster-czafliq9kcwp.ap-northeast-2.rds.amazonaws.com' (timed out)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)

 

Error Messages — SQLAlchemy 1.4 Documentation

Previous: Third Party Integration Issues Next: Changes and Migration Up: Home On this page: Error Messages Connections and Transactions DBAPI Errors SQL Expression Language Object Relational Mapping AsyncIO Exceptions Core Exception Classes ORM Exception C

docs.sqlalchemy.org

 

아무리 찾아봐도 연결이 안될 이유가 없었습니다.

먼저 AWS Sagemaker Jupyter Notebook에서 연결을 확인해보니 잘 되었습니다.

이로 확실한 것은 Sagemaker에서는 접속이되니 DB 문제는 아니라는 것,

그래서 가능한 원인은 두가지 중 하나 입니다.

1. 네트워크 문제  또는 2. 롤(권한)의 문제

1. 네크워크 문제는 Colab에서 IP를 확인하여 AWS VPC에서 Colab의 IP가 연결 오픈 되어있는지 확인하면 됩니다. 안되어있으면 추가해주어야 겠지요.

2. 롤문제는 접속시 AWS CLI를 통해 임시 권한을 받고 이를 통해 접속해 보면 확인 됩니다. 이역시 안되어있을 경우 IAM Role을 만들어서 해결 가능 합니다.

 

 

 

 

 

반응형

+ Recent posts