2023/6/3 @google-cloud/datastore v7.5.1 で emulator に繋げない
#OSS
原因の PR
fix: Allow user to set custom endpoints by danieljbruce · Pull Request #1101 · googleapis/nodejs-datastore
カスタムエンドポイントを使えるようにする変更
ローカルネットワークっぽいものなら sslCreds を insecure に
私は docker compose で Cloud Datastore エミュレータと、アプリケーションを起動するローカル開発環境と CI を持っています
7.5.1 からエミュレータに接続できなくなりました
これは、この PR の変更によって発生しています
https://github.com/googleapis/nodejs-datastore/pull/1101
baseUrl にローカルネットワークを意味するパーツが入っていない場合、grpc.credentials.createInsecure が利用されなくなりました
接続先は datastore:8081 のように、オーバーレイネットワーク上でサービス名によって解決されます
DATASTORE_EMULATOR_HOST 環境変数はまさにエミュレータのものであるべき
従来のように利用できるべき
認証が必要なカスタムエンドポイントをサポートするために、使い回すのではなく、別の環境変数を用意するのはどうでしょう?
これは異なるバージョンの Datastore クライントを用いて接続している例です
https://gist.github.com/pokutuna/314248d183f6fbfe60154f63751d3655
同じ問題に遭遇している人へのワークアラウンド
network_mode: "host" を利用し、ホストネットワークに参加させます
ホストのポートを占有するので、割り当てに調整が必要になります
Unable to connect to emulator running on docker compose with client 7.5.1 · Issue 1119 · googleapis/nodejs-datastore