仕事ではガッツリterraformを使っていて、今やっている作業でちょっとしたエラーに引っかかったので、記録を残しておく意味でブログ執筆。
terraformのバージョンはv0.11.7(のはず)。
$ terraform --version Terraform v0.11.7
タイトルに書いたとおり下らない話なのですが、terraform initしようとしたらInvalidClientTokenIdとエラーが出ました。こんな感じです。
$ terraform init ... ... Initializing the backend... Error configuring the backend "s3": InvalidClientTokenId: The security token included in the request is invalid. status code: 403, request id: <masked> Please update the configuration in your Terraform files to fix this error then run this command again.
で、ここで少し迷路にはまってしまったのですが、業務でterraformなりawscliなどを扱っている時はIAM roleやassume role, switch roleが*1駆使された設定を使用するようになっているので、自分に与えられた権限だといじれないのかなと思ってしまい、自分の設定を調べ直して時間を少し浪費してしまいました。
根本的な原因はs3 backendのコード内のprofileが間違った値になっていたため、正常に読み出せなかったということが分かりました。
terraform { backend "s3" { profile = "old" # 本当はnewというprofileにしないといけない region = "ap-northeast-1" bucket = "terraform-tfstate-bucket" key = "test.tfstate" } }
自分の設定を最初に疑って時間を使ってしまいましたが、エラーログにも Please update the configuration in your Terraform files to fix this error
と出ていたのだから、まずterraformのコードを確認しておけばよかったですね。
だいたいの答えは(エラー)ログに出ている、そんなことを再度確認したというお話でした。
*1:正直assume roleとかswitch roleとか理解してない