【Terraform】Unexpected attribute: "shared_credentials_file" is not 〜
はじめに
こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。
Terraformで作業していてタイトルに記載のエラー(文字数の関係で一部省略)に遭遇しました。コード自体に問題があるわけではなさそうで、原因究明に少し時間がかかってしまったので、この記事の情報が皆様のお役に立てれば幸いです。
👇Terraformのインストールに関してはこちら
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 の環境下で以下を参考
エラーメッセージ
Unexpected attribute: An attribute named "shared_credentials_file" is not expected hereTerraform
結論
HashiCorpのプラグインをダウングレードしてインストールしているTerraformとバージョンを揃える方法を採用。v3.42.0で発生していたエラーは、プラグインをv2.27.2にダウングレードすることで解消された。
これはEnhanced validationが新バージョンで強化されたため、古い属性が削除されたり非推奨とされたりする場合があるからである。
理由
(以下は推測であるが)バージョンアップにより導入されたEnhanced validation機能が厳密な検証を行い、設定ファイルの書き方により高い整合性を要求するようになった。その結果、過去のバージョンで許容されていた書き方がエラーとして検出されるようになった。
補足
上記は一時的な解決策に過ぎないため、近いうちにTerraform自体のバージョンアップを試みるべきだと考えている。バージョンアップにより他のコードでエラーが発生する可能性もあるが、その対応は避けられない。計画的にTerraformとそのプラグインを可能な限り最新状態に保ちたい。
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion