albatrosary's blog

UI/UXとエンタープライズシステム

App Engine から Cloud SQL に接続する

Cloud SQL に接続するにはマニュアルに書かれている通りで、特に App Engine から接続するときにはソケットによる接続を行う

形式 /cloudsql/INSTANCE_CONNECTION_NAME を使用して、Cloud SQL インスタンスの UNIX ドメイン ソケットにサービスを接続できます。

cloud.google.com

具体的には一般的な IP による接続の場合が

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'xxx.xxx.xxx.xxx',
      port: 3306,
      username: '',
      password: '',
      database: '',
      entities: [],
    }),

でソケットのときには

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      extra: {
        socketPath: '/cloudsql/hxxxxx:asia-northeast1:xxxxx-database'
      },
      username: '',
      password: '',
      database: '',
      entities: [],
    }),

ちなみに socketPath はここに書かれている接続名に /cloudsql/ を追加したものだから

socketPath: /cloudsql/接続名

f:id:albatrosary:20200706204457p:plain

※ 接続情報はこの書き方だとビルド後に切り替えるのがちょっと大変だから違う書き方です