1

AWS RDS を Google スプレッドシートに接続しようとしていますが、得られるのは

データベース接続の確立に失敗しました。接続文字列、ユーザー名、パスワードを確認してください。

トラッカーにある方法、つまり「エンドポイント ホスト アドレスの IP を使用する」を試しましたが、それでも同じエラーが発生します。

私は持っている:

  1. [RDS SETTINGS - public accessibilty- ON] を設定し、エンドポイントとアクセスの詳細が他のすべてのビューアー (Navicat、Adminer など) で機能することを確認しました。

  2. 「RDS VPC-Security Groups」のインバウンドとアウトバウンドで、必要なすべての Google IP をホワイトリストに追加しました (参照: https://developers.google.com/apps-script/guides/jdbc )。

私が使用しているコードは次のとおりです。

var connectionName = 'x.x.x.x:3306'
var user = 'admin';
var userPwd = 'pass';
var db = 'dbname';

var dbUrl = 'jdbc:mysql://' + connectionName + '/' + db;

function readFromTable11() {
  var conn = Jdbc.getConnection(dbUrl, user, userPwd); //error here
  Logger.log(conn);
  var start = new Date();
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT * FROM items');
  var numCols = results.getMetaData().getColumnCount();

  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += results.getString(col + 1) + '\t';
    }
    Logger.log(rowString);
  }

  results.close();
  stmt.close();

  var end = new Date();
  Logger.log('Time elapsed: %sms', end - start);
}

私はネットを精査しましたが、まだ機能させることができませんでした。

4

3 に答える 3

0

2021 年 7 月の時点で、標準の JDBC 接続を使用して RDS と AppScript を MySQL 5.7 に接続できました (受け入れられた回答では、v5.5.x バージョン以降の問題について言及されていました)。

唯一の秘訣は、AppScript JDBC ドキュメントに記載されているように、RDS インバウンド セキュリティ グループ内にこのリスト ( https://www.gstatic.com/ipranges/goog.txt )からすべての IP を追加/許可することでした。

この方法を使用するには、Apps Script のサーバーがデータベースに接続できるように、特定の CIDR IP アドレス範囲を許可リストに登録する必要があります。 https://developers.google.com/apps-script/guides/jdbc

PS: リストが非常に長いため、分割して 2 つのセキュリティ グループにアタッチする必要がありました。

于 2021-07-23T18:03:01.600 に答える