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