GCPのリソース作成にTerraformを利用するときのお話。
恐らくサービスアカウントによる認証の場合は問題ないと思いますが、ユーザアカウントによる認証でTerraformを利用する場合に10分ほど溶かしたので備忘録しておきます。
GCPでTerraformやる場合の正しい認証コマンド (結論!)
$ gcloud auth application-default login
GCPでTerraformやる場合、不十分な認証コマンド (失敗例)
$ gcloud auth login
不十分な認証コマンドでterraform applyするとどうなるか?
以下のように、invalid_grant
という400エラーが発生してしまいます。
module.stg.google_storage_bucket.XXXXXXXXXXX: Creating...
╷
│ Error: Post "https://storage.googleapis.com/storage/v1/b?alt=json&prettyPrint=false&project=projectXXXXXX": oauth2: cannot fetch token: 400 Bad Request
│ Response: {
│ "error": "invalid_grant",
│ "error_description": "Bad Request"
│ }
│
│ with module.stg.google_storage_bucket.XXXXXXXXXXX,
│ on ../../modules/XXXXXXXXXXX.tf line 164, in resource "google_storage_bucket" "XXXXXXXXXXX":
│ 164: resource "google_storage_bucket" "XXXXXXXXXXX" {
│
╵
はじめログインしているのになぜ?と思いましたが、gcloud auth login
はあくまでCLIとしてのログインのようです。(たぶんです)
一応、このあたりに説明がありますが、いまいち曖昧な感じもする気がしています。難しいですね。
この解決策に気づけたURLも一応残しておきます。→こちら
現場からは以上です!