2020-03-30に更新

TypeORMでApp EngineからCloud SQLに接続する

App EngineでNode.jsアプリケーションを動作させるときにTypeORMを使ってCloud SQLに接続する方法。

スタンダード環境の場合、Cloud SQLに内部IPで接続することができない。

App Engine から Cloud SQL への接続  |  Cloud SQL for MySQL

そのかわり、上記にも書かれているように Unixドメインソケットを使って接続することができる。具体的には /cloudsql/INSTANCE_CONNECTION_NAME というもの。INSTANCE_CONNECTION_NAMEはCloud SQLの詳細にあるインスタンス接続名という値。ホスト名とポートを設定するかわりにこのソケットのパスを設定する。

TypeORMで接続設定を作る場合は下記のようにするらしい。

        extra: {
            socketPath: `/cloudsql/${functions.config().db.conn}`,
        }

参考
【2019年10月版】TypeGraphQL なら ORM は TypeORM でしょう。 - Qiita

僕の場合は接続設定をTypeORMで用意されている環境変数で設定していたので、下記のようにして設定することができた。

TYPEORM_DRIVER_EXTRA='{"socketPath": "パス"}'

代わりにTYPEORM_HOSTとTYPEORM_PORTを削除する。これで接続できた。

ちなみに、このTYPEORM_DRIVER_EXTRAは文字コードの指定にも使うことができる。絵文字を使う場合はこれを指定しておかないとエラーになる。

TYPEORM_DRIVER_EXTRA='{"charset": "utf8mb4"}'
ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント