terraform initしようとしたらInvalidClientTokenIdというエラーが出たけど理由が下らなかった話

仕事ではガッツリ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"
  }
}

www.terraform.io

自分の設定を最初に疑って時間を使ってしまいましたが、エラーログにも Please update the configuration in your Terraform files to fix this error と出ていたのだから、まずterraformのコードを確認しておけばよかったですね。

だいたいの答えは(エラー)ログに出ている、そんなことを再度確認したというお話でした。

*1:正直assume roleとかswitch roleとか理解してない