📝

gcloudコマンドは成功するのに、Terraformが失敗するときの対処法

2023/10/18に公開

記事の内容

gcloudコマンドで直接GCPリソースを作成することはできたが、Terraformにて同じProjectに対してリソースを作ることができなかった(権限エラー)になった時の対処法

記事の長さ

1分で読めます

事象

  • gcloud コマンドで特定のProjectに対して、リソースを作成することはできた
  • 同じターミナルでTerraformを実行し、同じProjectに対してリソースを作成しようとしたが、権限エラーで作成できなかった
google_sql_database_instance.instance: Creating...
╷
│ Error: Error, failed to create instance instance-1: googleapi: Error 403: The client is not authorized to make this request., notAuthorized
│
│   with google_sql_database_instance.instance,
│   on main.tf line 8, in resource "google_sql_database_instance" "instance":8: resource "google_sql_database_instance" "instance" {
│
╵

原因

~/.config/gcloud/credentials.db ファイルは、gcloud auth loginコマンドにて、変更されていたが、
~/.config/gcloud/application_default_credentials.json.dbファイルが変更されていなかった。

詳細

~/.config/gcloud/credentials.dbは、gcloudコマンドなどを利用する際に参照されるファイルで、
~/.config/gcloud/application_default_credentials.json.dbは、GCPのSDKを利用したプログラムを利用する際に利用されるファイルです。
そのため、Terraformは後者のファイルに設定されているCredentialsを参照します。

対応

gcloud auth application-default login を実行する

note

勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。

https://note.com/ring_belle/membership

Discussion