web-dev-qa-db-ja.com

デフォルトの資格情報をロードできませんでしたか? (Node.js Google Compute Engineチュートリアル)

状況:

私はこのチュートリアルに従います: https://cloud.google.com/nodejs/tutorials/bookshelf-on-compute-engine

npm startに移動します。

http:// localhost:808

空白のページに次のテキストが表示されます。

Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.

OAuthを使用しているため、これは意味がありません。リンクをたどってページを読みましたが、GOOGLE-APPLICATION-CREDENTIALSフィールドはどこでも、チュートリアルではそれについて何もしません。


質問:

手順を再現して、同じ結果が得られたら教えてください。

(5分かかります)

そうでない場合、何が間違っていたでしょうか?

24
Coder1000

はい、同じエラーが発生しました。 Google Cloud Platformドキュメントの「入門」本棚チュートリアルでは、これについてはどこにも言及されていません。つまり、このチュートリアルを試す新しい開発者にはこのエラーが表示されます。

これを読んでください: https://developers.google.com/identity/protocols/application-default-credentials

次のコマンドを実行してこの問題を修正しました:gcloud auth application-default login

これによりログインが行われ、その後、ローカルでコーディングするとその認証が使用されます。

82
newbreedofgeek

この問題には2つの解決策があります。他の人が述べたように、1つのオプションはgcloud auth application-default login

2番目のオプションは、環境変数GOOGLE_APPLICATION_CREDENTIALS。資格情報を定義するファイルを指す必要があります。このファイルを取得するには、次の手順に従う必要があります。

API Console Credentialsページに移動します。

プロジェクトのドロップダウンから、プロジェクトを選択します。

[資格情報]ページで、[資格情報の作成]ドロップダウンを選択し、[サービスアカウントキー]を選択します。

[サービスアカウント]ドロップダウンから、既存のサービスアカウントを選択するか、新しいアカウントを作成します。

[キータイプ]で[JSONキー]オプションを選択し、[作成]を選択します。ファイルがコンピューターに自動的にダウンロードされます。

ダウンロードした* .jsonファイルを選択したディレクトリに配置します。

このディレクトリはプライベートである必要があります(誰にもアクセスを許可することはできません)が、Webサーバーコードにアクセスできます。

環境変数GOOGLE_APPLICATION_CREDENTIALSをダウンロードしたJSONファイルのパスに設定します。

詳細については https://developers.google.com/identity/protocols/application-default-credentials をご覧ください

9
Caner
  1. Jsonファイルを使用してサービスアカウントキーを作成し、ダウンロードします。 https://console.cloud.google.com/apis/credentials/serviceaccountkey

  2. これをENVファイルに追加します

    GOOGLE_APPLICATION_CREDENTIALS = "<PATH_TO_SERVICE_ACCOUNT_JSON_FILE>"

例えば:

GOOGLE_APPLICATION_CREDENTIALS=/Users/hello/Documents/ssh/my-10ebbbc8b3df.json
5
Bira

アプリをローカルで実行している場合、gcloud beta auth application-default loginコマンドは、ローカルの資格情報を取得するのに十分なはずです(そうするために チュートリアル を更新しました)。

Google Compute Engineでアプリを実行するときに、Compute Engineインスタンスが適切なスコープ(cloud-platformで十分です)、アプリはGoogle Cloud Platform APIを使用して自動的に認証を行います。追加の作業は必要ありません。

4
jdobry

これを使用して問題を解決してください。これは実際に機能します:-資格情報パラメーターを入力して、それへのキーへの参照を提供します。

const serviceAccount = require('../key.json');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
});
1
MAITRAIYA MALI

資格情報を手動で設定する別の方法を提供します。ローカル開発およびCloud Function、Compute EngineなどのGCPでの実行。

サービスアカウントを使用して、このサービスアカウントに適切な権限を付与できます。例えばクラウドトレース管理者

GCPクライアントライブラリのprivate_keyclient_email、およびprojectIdオプションを設定します。これらのオプションは、サービスアカウントのjsonファイルから取得できます。

たとえば、クラウド機能でCloud Trace Node.jsクライアントライブラリを使用しています。

credentialsprojectIdを設定する前に、このエラーが発生しました。

エラー:アプリケーションの既定の資格情報を取得中に予期しないエラーが発生しました:既定の資格情報を読み込めませんでした。詳細については、 https://developers.google.com/accounts/docs/application-default-credentials を参照してください。 GoogleAuthで。 (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:248:31)ステップ(/srv/node_modules/google-auth-library/build/src/auth/googleauth.js: 47:23)Object.next(/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:28:53)atフルフィルド(/ srv/node_modules/google-auth-library/build/src/auth/googleauth.js:19:58)at process._tickDomainCallback(internal/process/next_tick.js:229:7)

credentialsprojectIdを環境変数として渡すことができます。 credentialsprojectIdを設定すると、エラーはなくなります。

const tracer = require('@google-cloud/trace-agent').start({
    samplingRate: 0,
    bufferSize: 1,
    credentials: {
      client_email: process.env.CLIENT_EMAIL,
      private_key: process.env.TRACE_AGENT_ADMIN,
    },
    projectId: process.env.X_GOOGLE_GCLOUD_PROJECT || process.env.PROJECT_ID,
  });

X_GOOGLE_GCLOUD_PROJECTは、クラウド機能ランタイムの組み込み環境変数です

0
slideshowp2

ここに移動します: https://firebase.google.com/docs/admin/setup#initialize_the_sdk の手順に従って秘密鍵を作成します。次に、プロジェクトディレクトリで秘密鍵を開くコマンドプロンプトをダウンロードし、次のコマンドを実行します。

 set GOOGLE_APPLICATION_CREDENTIALS=C:\YOUR-PATH\YOUR-KEY.json
0
HMaziad