😇

TerraformでAn argument named "db_name" is not expected here.と怒られた話

2024/06/29に公開

概要

最近、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