postgres 方言を使用して Cloud Spanner と通信するプログラムを作成しています。私のアプリケーションは gin サーバーであり、このドキュメントで説明されているように pgadapter を使用して接続しています。
私のアプリケーションはローカルで正常に動作します。しかし、クラウドにデプロイして実行すると、次のログが表示されます。
このエラーは主に、startpgadapterwithcredentials
関数に起因します。
私のローカル システムでは、google_application_credentials
が設定されており、資格情報を取得できるようになります。ただし、クラウドで実行している場合、これは機能しません。
クラウドランで実行するにはどうすればよいですか?
追加情報: ここに示されている例に従ってください。
Cloud Run の埋め込みコンテナで PGAdapter を起動し、環境から PGAdapter にサービス アカウントの認証情報をコピーしようとしているようです。埋め込みコンテナ。問題は、Cloud Run が基盤となるサービス アカウント ファイルへのアクセスを提供しないことです。代わりに、Google Cloud ライブラリに環境のデフォルトの認証情報を取得させる必要があります。
この例の難しい部分は、組み込みコンテナーで PGAdapter を開始していることです。これは、その環境にはデフォルトの資格情報がないことを意味します。 Cloud Run で PGAdapter を実行する推奨方法は、PGAdapter をメイン コンテナに含めることです。これにより、PGAdapter は Cloud Run によって提供されるデフォルトの認証情報のみを取得できるようになります。これは、PGAdapter の起動時に -c /path/to/credentials.json
パラメーターを指定しないことを意味します。
PGAdapter をメイン コンテナに含める方法は (少なくとも) 2 つあります。
.jar
ファイル ビルドを Docker イメージに追加し、コンテナーで PGAdapter を起動します。 .jar
ファイルから PGAdapter を直接起動する方法については、[この例] を参照してください。これには、Java JRE を Docker イメージに追加する必要もあります。 ENTRYPOINT
をオーバーライドする必要があります。 後者のオプションの広範な (実行可能な) 例については、Go の PGAdapter Cloud Run の例 を参照してください。
以上がCloud Run でデフォルトの認証情報が見つかりませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。