pyhaya’s diary

プログラミング、特にPythonについての記事を書きます。Djangoや機械学習などホットな話題をわかりやすく説明していきたいと思います。

GCP の Credential の読み込み

Google Cloud Platform では認証情報をJSON形式などでダウンロードすることで外部のアプリケーションから BigQuery などのサービスにアクセスすることができます。しかし、認証情報を読み込ませるのに苦労したので解決までのメモを残しておきます。

環境

何をやろうとしていたか

Go を用いて BigQuery にアクセスをしようと考えてました。そのためにGCPから認証情報が入ったJSONをダウンロードした

どこで詰まったのか

ドキュメントにあるようにJSONまでのパスを環境変数にセットしました。

export GOOGLE_APPLICATION_CREDENTIALS=/home/.../credential.json

さあ、これでアクセスできると考えプログラムを走らせたところ

Response: {
  "error": "invalid_grant",
  "error_description": "Token has been expired or revoked."
}

。。。いや、今発行したばかりなのに期限切れとか取り消されたとかなんだよ。試しに、.bashrcにこの環境変数をセットして試してみましたがダメでした。echo $GOOGLE_APPLICATION_CREDENTIALSで確認するとちゃんとセットした値が出てくるので環境変数には正しく設定されているんだよな。。。

どう解決したか

最終的に、これはプロジェクトのルートディレクトリに .env を作ってそこに

GOOGLE_APPLICATION_CREDENTIALS=/home/.../credential.json

とセットし、main()の中で.envファイルを読み込むとエラーがでなくなりました。なぜかはわかりません。


GCPの教科書

GCPの教科書