はじめに
TerraformでRDSを作成する際にaws_db_instance
を指定する際にDB名指定で引っかかったので、備忘録として記事にしたいと思います。
環境
項目 | バージョン |
---|---|
Terraform | 1.1.8 |
provider registry.terraform.io/hashicorp/aws | 4.9.0 |
provider registry.terraform.io/hashicorp/random | 3.1.2 |
satsuton:Test ma-sato$ terraform -v
Terraform v1.1.8
on darwin_amd64
+ provider registry.terraform.io/hashicorp/aws v4.9.0
+ provider registry.terraform.io/hashicorp/random v3.1.2
satsuton:Test ma-sato$
経緯
Terraformにて以下のようにコードを作成し、terraform plan
を実行。(リソース作成前の確認)
※実際のコードから一部抜粋しております。
resource "aws_db_instance" "mysql_standalone" {
engine = "mysql"
engine_version = "8.0.20"
~~省略~~
name = "tastylog"
parameter_group_name = aws_db_parameter_group.mysql_standalone_parametergroup.name
option_group_name = aws_db_option_group.mysql_standalone_optiongroup.name
~~省略~~
tags = {
Name = "${var.project}-${var.environment}-mysql-standalone"
Project = var.project
Env = var.environment
}
}
以下のWarningが表示される。
│ Warning: Argument is deprecated
│
│ with aws_db_instance.mysql_standalone,
│ on rds.tf line 76, in resource "aws_db_instance" "mysql_standalone":
│ 76: name = "tastylog"
│
│ Use db_name instead
│
│ (and one more similar warning elsewhere)
対処方法
name
をdb_name
に変更してterraform plan
を再実行。
resource "aws_db_instance" "mysql_standalone" {
engine = "mysql"
engine_version = "8.0.20"
~~省略~~
db_name = "tastylog"
parameter_group_name = aws_db_parameter_group.mysql_standalone_parametergroup.name
option_group_name = aws_db_option_group.mysql_standalone_optiongroup.name
~~省略~~
tags = {
Name = "${var.project}-${var.environment}-mysql-standalone"
Project = var.project
Env = var.environment
}
}
Warningが表示されないことを確認。
解説
aws_db_instance
にてname
でDB名を指定することは非推奨でdb_name
でDB名を指定することを推奨しています。(2022/04/20現在)
そのため、db_name
でDB名を指定したところ、Warning分が消えたということになります。
Terraformの公式ドキュメントにもdb_name
で指定する旨記載されております。
db_name - (Optional) The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance. Note that this does not apply for Oracle or SQL Server engines. See the AWS documentation for more details on what applies for those engines. If you are providing an Oracle db name, it needs to be in all upper case. Cannot be specified for a replica.
参考記事にも参考にしたZennの記事と公式ドキュメントのリンクを載せてあります。
そちらも併せてご覧下さい。
参考記事