Google Apps Script의 JDBC에서 시간 초과가 자주 발생하는 방법

4976 단어 GoogleAppsScriptJDBC
Google Apps Script(GAS)를 웹 프런트, 데이터베이스에 Azure SQL Server를 사용하는 이슈에서의 문제 대책과 그 경과, 대처(임시)를 비망록으로 업합니다.

Google Apps Script에서 Azure SQL Server에 연결



GAS 사용한다면 GCP SQL 사용하면 좋을 것이라고 생각하면서 Azure SQL Server를 준비. Google에서 문서를 공개했으므로 이를 참고로 Azure SQL Server 방화벽 설정, 연결 테스트 등을 수행했습니다.

이 때의 설정은 아래의 화면과 같습니다.



최소 TLS 버젼의 설정입니다만, 「>1.2」로 해 보았더니 연결되지 않고, 「>1.0」으로 한 바 연결되었습니다. 혹시 GAS의 JDBC의 TLS는 1.0일지도 모릅니다.

연결 정책이지만 VPN을 통해 연결하려고 하면 프록시에 지정해야 하는 것 같습니다. 속도적으로는 리디렉션이 빠르다고 합니다만, VPN으로 DB의 조작이 필요했기 때문에, 프록시로 하고 있습니다.

Azure SQL Server 보안 설정



Azure SQL Server에서 아래 IP 주소에 연결 권한을 설정합니다.
IP 범위가 너무 넓어서 깜짝 놀라지 만 GAS에서 사용하는 것 같습니다.

허용할 포트
64.18.0.0/20
64.233.160.0/19
66.102.0.0/20
66.249.80.0/20
72.14.192.0/18
74.125.0.0/16
173.194.0.0/16
207.126.144.0/20
209.85.128.0/17
216.239.32.0/19

이것으로 설정이 완료되었습니다. 데이터베이스 연결 문자열, 사용자 이름 및 암호를 사용하여 연결합니다.

샘플 코드

function test() {
  var r = [];
  try {
    var connectionString = "";//接続文字列
    var dbuser = "";//データベースのユーザ名
    var dbuserPwd = "";//パスワード
    // JDBCでデータベースへのコネクション確立
    var conn = Jdbc.getConnection(connectionString, dbuser, dbuserPwd);
    var stmt = conn.prepareStatement("SELECT * FROM SAMPLETABLE");
    stmt.setString(1, arg.uuid);
    var result = stmt.executeQuery();
    while (result.next()) {
      var s = {};
      s['ID'] = result.getString('ID');
      s['NAME'] = result.getString('NAME');
      r.push(s);
   }
   catch{
   }
   finally{
   }
   return JSON.stringify(r);
}

안전하게 연결할 수 있으면 성공입니다.

좋은 웹페이지 즐겨찾기