emahiro/b.log

日々の勉強の記録とか育児の記録とか。

GCPの認証設定が切れた時の対処法

いつからかわかりませんが、localのコンソールからGCPの各サービスのAPIを叩くときに以下のエラーが出てAPIが叩けないと言うことがありました。

err: dialing: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
exit status 1

GCPの Application Default Credentials(ADC) が古い設定のまま更新されていなかったことが原因でした。
しかし、エラーメッセージにある Setting Up Authentication for Server to Server Production Applications  |  Authentication  |  Google Cloud には認証設定が必要である、とだけ書いてあって、その認証設定の仕方までは書いてません...(困った)

そこで GCP の Application Default Credentialsの再設定方法を調べたところ以下のコマンドで再設定可能でした。

$ gcloud auth application-default login 

実際に再設定してみます。

$ gcloud auth application-default login 

The environment variable [GOOGLE_APPLICATION_CREDENTIALS] is set to:
  [/USERS_PATH/.config/gcloud/legacy_credentials/[AUTHORIZED_USER]/adc.json]
Credentials will still be generated to the default location:
  [/USERS_PATH/.config/gcloud/application_default_credentia
ls.json]
To use these credentials, unset this environment variable before
running your application.

~/.config 配下に adc.json と言う認証されたユーザーのcredentialsが入ったjsonファイルが生成されます。GCPAPIを叩くときはこのadc.json の内容を参照するので、これが正しく設定されている必要があります。

このGCPの認証設定については以下の記事が参考になります。

dev.to

他に困ってる人いないのかなーと思ってざっと調べてみたら関連しそうなQ&Aが上がってました。

stackoverflow.com

この回答に記載してあるところの

gcloud auth login
You haven't application default credentials

gcloud auth login しただけではADCは取得できなかったみたいです。(いつからこれが適用されたかまではわかってません。)

これを機会にGoogle Cloud SDK周りの使い方のドキュメントをざっと見直してみました。

承認について

Authorizing Cloud SDK tools  |  Cloud SDK Documentation  |  Google Cloud

gcloud auth application-default login について

gcloud auth application-default login  |  Cloud SDK  |  Google Cloud