서버 설정에서 RDS DB(Aurora) 인스턴스에 연결을 유지하고 캐시되는 커넥션 풀이 있습니다.
람다에는 세션이 없고 연결이 캐시되지 않습니다.
Why RDS Proxy?
Lambda 함수는 마이크로 VM에서 실행됩니다. Lambda는 호출 간에 마이크로 VM을 재사용합니다. 이러한 이유로 핸들러 외부(init 코드에서) 데이터베이스에 대한 연결을 생성하고 열어 두는 것이 좋습니다. 마이크로 VM이 완전히 격리되어 있으므로 서버에서와 같이 연결 풀을 사용할 수 없습니다. 이러한 이유로 우리는 RDS 프록시를 만들었습니다 . RDS 프록시는 데이터베이스에 대한 연결 풀을 유지합니다. Lambda 함수는 데이터베이스에 직접 연결하는 대신 프록시에 연결합니다.
엑셀파일에서 xlwings 메뉴의 [Run main] 버튼을 클릭합니다. 아래와 같이 A1 Cell에 Hello World! 문자가 입력됩니다.
모듈 이름과 관계없이 Python 함수를 호출하려면 RunPython을 사용합니다.
엑셀의 VBA에 [도구] - [참조] 버튼을 클릭하고 xlwings를 참조하도록 선택합니다.
RunPython 함수를 사용한 VBA 스크립트 입니다. hello.xlsm 파일을 만들고 아래처럼 VBA 스크립트를 작성합니다.
Sub HelloWorld()
RunPython "import hello; hello.world()"
End Sub
기본적으로 "RunPython"은 Excel 과 파이썬 파일이 동일한 디렉터리에 같은 이름을 가졌다고 가정하지만, 파일 이름과 디렉토리 위치를 다르게 지정할 수 있습니다. Python 파일이 다른 폴더에 있는 경우 PYTHONPATH에 해당 폴더를 추가합니다. 파일 이름이 다른 경우 RunPython 명령어에 파일 이름을 지정합니다.
xlwings.Book.caller()를 사용하여 Excel Workbook을 호출하는 예제입니다.
6단계: 접속할 DB의 정보를 입력합니다. 본 문서에서는 Local 컴퓨터에 MySQL 서버가 설치되어 있어 localhost(127.0.0.1)를 입력했습니다.
호스트: localhost(127.0.0.1) 또는 접속하고자 하는 서버의 IP Address 또는 endpoint
사용자: db user
비밀번호: 비밀번호
포트번호 : 3306
7단계: " + Connect" 버튼을 클릭하여 DB에 접속합니다.
8단계: 촤측 데이터베이스 메뉴에 localhost(127.0.0.1) 연결이 추가된 것을 볼 수 있습니다.
9단계: 터미널을 이용하려고 아래 그림과 같이 "Open Terminal"을 클릭하면 "Free account not support open terminal!" 이라는 메시지가 출력된다. Free 버전에서는 지원이 안되고 년간 20$를 지불하는 Premium은 지원된다. 20$를 지불하면서까지 사용하고 싶은 생각은 없다.
-> 2023.09.26 현재 기준 Terminal 기능이 무료로 지원된다. "Open Termial" 을 클릭하면 아래와 같은 MySQL DB command line 화면이 보여진다.
10단계: MySQL의 각 스키마를 클릭한 후 아래 화면의 "Open "을 클릭하여 SQL 편집기를 연다.
11단계: SQL 편집기에 원하는 SQL을 입력하고 "Execute" 버튼을 클릭하거나 "Ctlr + Enter"를 친다. 입력한 SQL 문장에 마우스 오른쪽을 클릭하면 SQL 실행을 할 수 있는 여러 메뉴들이 뜬다.
12단계: 이 MySQL 쿼리를 실행하면 아래창에 결과가 출력된다.
이러한 방식으로 VSCode를 통해 데이터베이스에 액세스하고 쿼리를 실행할 수 있습니다. VSCode로 개발 시 간단하게 DB를 조회하는 정도로 활용할 수 있을 정도이다.
VSCode에서 MySQL DB에 연결하기 위해 MySQL용 Extensions을 설치하고 연결하고자 하는 DB의 정보를 입력하여 접속합니다.
1단계: Visual Studio Code를 엽니다.
2단계: Extensions로 이동하여 MySQL 확장을 검색하고 "MySQL"을 입력합니다.
- 아래 화면의 Extensions(①)을 클릭한 후 검색란(②)에 "MySQL"을 입력한다.
3단계: "MySQL" 확장 프로그램을 설치합니다.
- 검색된 Extension 중 "MySQL(MySQL management tool)" 을 [Install] 버튼을 클릭하여 설치한다.
4단계: 탐색기 옵션을 클릭하거나 ( Ctrl + Shift + E )를 누르면 MySQL이 이 섹션에 추가된 것을 볼 수 있습니다.
5단계: "MYSQL" 우측의 "+"를 클릭하면 database 의 host 정보를 입력하라는 창이 보여집니다. host, user, password, port, SSL certificate path 를 입력하는 창이 순서대로 나타납니다. 접속하고자 하는 DB의 정보를 각각 이력합니다.
6단계:서버 주소를 입력합니다. 본 문서에서는 컴퓨터에 MySQL 서버가 설치되어 있으므로 localhost를 입력했습니다.
7단계: 그런 다음 DB계정, 암호, user, password, port, SSL certificate path 를 차례를 입력합니다. SSL certificate path 가 없으면 입력하지 않습니다.
호스트: localhost
사용자: db user
비밀번호: 비밀번호
포트번호 : 3306
SSL certificate path : 해당사항 없으면 입력하지 않음
8단계: 데이터베이스에 액세스할 수 있는 MySQL 섹션에 localhost 연결이 추가된 것을 볼 수 있습니다.
9단계: 데이터베이스에 연결하려면 localhost를 마우스 오른쪽 버튼으로 클릭하고 새 쿼리를 클릭합니다.
10단계: 다음 명령을 입력하여 쿼리를 실행합니다. 쿼리 실행은 마우스 오른쪽을 클릭한 후 Run MySQL Query를 클릭하거나 단축어(ctrl + alt + E)를 입력합니다.
CREATE DATABASE myrestaurant ;
CREATE TABLE IF NOT EXISTS myrestaurant.users(
id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(200) NOT NULL,
phone VARCHAR(200),
address VARCHAR(200),
password VARCHAR(200) NOT NULL
);
INSERT INTO myrestaurant.users(name,phone,address,password)
VALUES
('Gaurav','123456789','Mumbai,India','pass134'),
('Sakshi','987654321','Chennai,India','pass456');
11단계: 이 데이터베이스에 추가된 'users'라는 새 테이블을 보려면 연결을 새로 고칩니다. 'users'를 마우스 오른쪽 버튼으로 클릭하고 '상위 1000개 선택'을 클릭합니다.
jdbc Url 뒤에 ‘allowPublicKeyRetrieval=true&useSSL=false를 붙여주면 됩니다.
SQL State : S1009
Error Code : 0
Message : Could not connect to address=(host=127.0.0.1)(port=3306)(type=master) : RSA public key is not available client side (option serverRsaPublicKeyFile not set)
Caused by: java.sql.SQLTransientConnectionException: Could not connect to address=(host=127.0.0.1)(port=3306)(type=master) : RSA public key is not available client side (option serverRsaPublicKeyFile not set)
Caused by: java.sql.SQLException: RSA public key is not available client side (option serverRsaPublicKeyFile not set)