😇
TerraformでAn argument named "db_name" is not expected here.と怒られた話
概要
最近、AWSの学習を始めて、TerraformでRDSインスタンスを構築しようとしたところ、「An argument named "db_name" is not expected here.」というエラーに直面しました。色々な情報を調べてみましたが、解決策が見つからず困っていたため、AWS Summit JapanのHashiCorpブースに突貫しアドバイスをいただきました。(こんな素人質問に優しく回答していただいたHashCorpの方、誠にありがとうございました)
原因
TerraformのVersionが古いことが原因でした。
具体的には...
DockerでTerraformのImageを持ってきていたため、TerraformのImageは比較的新しいものだったのですが、provide.tf
内でversion = "~> 3.0"
と設定していたため、実際に動作しているTerraformのVersionが古いものになっていました。
# ====================
# Provider
# ====================
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0" // 3.0以上4.0未満という意味
}
}
}
# 中略
# ====================
# RDS Instance
# ====================
# RDSサーバーの設定
resource "aws_db_instance" "main" {
identifier = "******"
db_name = "******"
allocated_storage = 20
storage_type = "gp2"
engine = "postgres"
engine_version = "14.12"
instance_class = "db.t3.micro"
password = "${var.rds_pass}"
username = "${var.rds_username}"
db_subnet_group_name = "${aws_db_subnet_group.db-subnet.name}"
vpc_security_group_ids = ["${aws_security_group.db-sg.id}"]
parameter_group_name = "${aws_db_parameter_group.db-pg.name}"
skip_final_snapshot = true
multi_az = false
availability_zone = "ap-northeast-1"
publicly_accessible = true
tags = {
Name = "db"
}
}
Error: Unsupported argument
on rds.tf line 21, in resource "aws_db_instance" "main":
21: db_name = "*******"
An argument named "db_name" is not expected here.
対処法
TerraformのVersion指定を変更して最新に近いVersionのものを使用するようにしましょう
# ====================
# Provider
# ====================
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
まとめ
今回のエラーに関しては本当に対処法がわからず、インターネットの海を彷徨ってました。
当エラーは、インターネットに具体的な対処方法は載っていなかったため、今回まとめてみました。
最後まで読んでいただきありがとうございました。
Discussion