0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Apps Script の JDBC で timeout が頻発する際の対策

Posted at

 Google Apps Script(GAS) を Web フロント、データベースに Azure SQL Server を使う案件でのトラブル対策とその経過、対処(仮)を備忘録としてアップします。

Google Apps Script から Azure SQL Server への接続

 GAS 使うなら、GCP SQL 使えばいいのにと思いつつ、Azure SQL Server を準備。Google からドキュメントが公開されていますので、これを参考に、Azure SQL Server のファイアウォールの設定や、接続テストなどを行いました。

 この際の設定は、下の画面の通りです。

azure SQL Server Firewall

 最小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);
}

無事、接続できれば成功です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?