🚨

【Terraform】Unexpected attribute: "shared_credentials_file" is not 〜

2024/05/07に公開

はじめに

こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。

Terraformで作業していてタイトルに記載のエラー(文字数の関係で一部省略)に遭遇しました。コード自体に問題があるわけではなさそうで、原因究明に少し時間がかかってしまったので、この記事の情報が皆様のお役に立てれば幸いです。

👇Terraformのインストールに関してはこちら

https://zenn.dev/take_tech/articles/32188cd3607721

Terraformの環境

$ terraform -v
Terraform v1.8.2
on darwin_arm64
+ provider registry.terraform.io/hashicorp/aws v3.42.0
+ provider registry.terraform.io/hashicorp/awscc v0.75.0

今回は、v3.42.0 に着目

エラーが生じたコード

provider "aws" {
  shared_credentials_file = "~/.aws/credentials" # エラーメッセージへ
  profile = "*********-stg"
  region = "ap-northeast-3"
}

v3.42.0 の環境下で以下を参考
https://registry.terraform.io/providers/hashicorp/aws/3.42.0/docs#shared-credentials-file

エラーメッセージ

Unexpected attribute: An attribute named "shared_credentials_file" is not expected hereTerraform

結論

HashiCorpのプラグインをダウングレードしてインストールしているTerraformとバージョンを揃える方法を採用。v3.42.0で発生していたエラーは、プラグインをv2.27.2にダウングレードすることで解消された

これはEnhanced validationが新バージョンで強化されたため、古い属性が削除されたり非推奨とされたりする場合があるからである。

https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform

理由

(以下は推測であるが)バージョンアップにより導入されたEnhanced validation機能が厳密な検証を行い、設定ファイルの書き方により高い整合性を要求するようになった。その結果、過去のバージョンで許容されていた書き方がエラーとして検出されるようになった。

https://dev.classmethod.jp/articles/test-new-enhanced-validation-for-terraform-vscode-extension/

補足

上記は一時的な解決策に過ぎないため、近いうちにTerraform自体のバージョンアップを試みるべきだと考えている。バージョンアップにより他のコードでエラーが発生する可能性もあるが、その対応は避けられない。計画的にTerraformとそのプラグインを可能な限り最新状態に保ちたい。

最後に

ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉

noteでも記事を執筆していますので、ぜひチェックしてみてください。
https://note.com/take_lifelog/n/n58df7ce7af6f

他にもこのようなことについて記載しているのでお読みいただければ幸いです。

https://zenn.dev/take_tech/articles/275e5f4242973d

https://zenn.dev/take_tech/articles/374817f256ec9d

最後までお読みいただき、誠にありがとうございました!

Discussion