👏

Google Cloud へ terraform 実行時の「oauth2: cannot fetch token」の解決

2024/07/27に公開

発生事象

Macマシンでローカルから、Google Cloud に向けて terraform apply を実行した際に、以下のようなエラーが発生しました。

╷
│ Error: Error when reading or editing Project Service : Request `List Project Services <REPLACE>` returned error: Batch request and retried single request "List Project Services <REPLACE>" both failed. Final error: Failed to list enabled services for project <REPLACE>: Get "https://serviceusage.googleapis.com/v1/projects/<REPLACE>/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false": oauth2: cannot fetch token: 400 Bad Request
│ Response: {"error":"invalid_grant","error_description":"Invalid grant: account not found"}
│ 
│   with google_project_service.project_services["cloudbuild.googleapis.com"],
│   on services.tf line 8, in resource "google_project_service" "project_services":
│    8: resource "google_project_service" "project_services" {
│ 
╵

解決方法

以下のコマンドが解決になるかもしれません。

$ gcloud auth application-default login
$ export GOOGLE_APPLICATION_CREDENTIALS=~/.config/gcloud/application_default_credentials.json

これは、Google Cloud のデフォルトの認証情報を設定して .json ファイルに格納したのち、 terraform などのツールが認証情報を取得するための環境変数 GOOGLE_APPLICATION_CREDENTIALS にそのファイルパスを指定しています。

もしくはドキュメントをご覧ください。

Discussion