Vertex AI WorkbenchからCloud SQLへのプライベート接続

Vertex AI Workbenchのデータソースとしてプライベート接続なCloud SQLにつなぐ方法まとめ。

Workbenchから直接プライベートなCloud SQLに接続することはできなそうなので、BigQueryを経由して接続した。

設定方法

Cloud SQL側の設定

Cloud SQLのポータルで接続対象のインスタンスを選択し、接続 > ネットワーキング > Google Cloud サービスの承認プライベート パスを有効にするにチェックを入れておく。 チェックボックス下の注釈にある通り、BigQueryなどのGoogle CloudサービスがプライベートIPでCloud SQLに接続できるようにするために必要な設定らしい。

BigQuery側の設定

公式ドキュメントに従って、BigQueryの外部データソースとしてCloud SQLを登録する。

設定した内容:

  • 接続タイプ: 今回はMySQL
  • 接続 ID: Cloud SQLのconnection name
  • データ ロケーション: Cloud SQLと合わせた
  • データベース名: Cloud SQLのデータベース名

サービス アカウントへのアクセスを許可の設定はIAMのページから設定できるが、ページ右上のGoogle 提供のロール付与を含めるのチェックを入れないと画面上参照できないので注意。

Workbench側からの呼び出し

pythonでは以下のように呼び出すことができる。

from google.cloud import bigquery

client = bigquery.Client()
query = 'SELECT * FROM EXTERNAL_QUERY("sys1234567-1-12345678.asia-northeast1.test-connection", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");'
data = client.query(query).to_dataframe()

クエリの書き方

こちらを参照。EXTERNAL_QUERYでCloud SQL側からクエリしてきた結果をBigQuery側で使える。