名前はまだない

インフラとバックエンドの間を彷徨っているエンジニア…の卵

Terraform - AWS RDSのengine_versionが見つからない

  • Terraformで何も考えずにAWS RDSを作ろうと思ったら以下のエラーで暫くハマってた。
Error: error creating RDS DB Instance: InvalidParameterCombination: Cannot find version 5.7.mysql_aurora.2.07.2 for aurora

状況

  • 以下の構成でAurora for MySQLを作ろうとしてた
resource "aws_rds_cluster" "this" {
  cluster_identifier              = "***"
  engine                          = "aurora-mysql"
  engine_version                  = var.rds_aurora_version
  db_subnet_group_name            = aws_db_subnet_group.this.name
  vpc_security_group_ids          = [aws_security_group.aurora.id]
  master_username                 = var.rds_master_username
  master_password                 = var.rds_master_password
  enabled_cloudwatch_logs_exports = ["error", "slowquery"]
  backup_retention_period         = 5
  preferred_backup_window         = "18:00-19:00" 
  preferred_maintenance_window    = "sun:20:00-sun:21:00"
}

resource "aws_rds_cluster_instance" "this" {
  count              = 1
  identifier         = "***-instance-${count.index}"
  cluster_identifier = aws_rds_cluster.this.id
  instance_class     = var.rds_instance
}

これに環境変数var.rds_aurora_version = "5.7.mysql_aurora.2.07.2"を渡して、そのままterraform applyすると何故か最初にも書いたようなエラーで落ちる

Error: error creating RDS DB Instance: InvalidParameterCombination: Cannot find version 5.7.mysql_aurora.2.07.2 for aurora

いや、普通にAWSコンソールでもバージョンあるやん!とか思いつつ調べてたら
engineのデフォルト値はauroraらしい
なのでengine="aurora"のバージョンを見に行って落ちていた

www.terraform.io

対応策

ここにもあるようにaws_rds_cluster_instanceにもengine, engine_versionを指定することで解決
RDSのTerraformは地味に時間かかるのではまると辛い

github.com

resource "aws_rds_cluster_instance" "this" {
  count              = 1
  identifier         = "***-instance-${count.index}"
  cluster_identifier = aws_rds_cluster.this.id
  engine             = "aurora-mysql"
  engine_version     = var.rds_aurora_version
  instance_class     = var.rds_instance
}