プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

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とか理解してない