Terraformにて、AuroraやElastiCacheのスペック変更はデフォルトでメンテナンスウィンドウでの変更になる

Terraformにて、AuroraやElastiCacheのスペック変更はデフォルトでメンテナンスウィンドウでの変更になる

Clock Icon2025.07.07

こんにちは、ゲームソリューション部のsoraです。
今回は、Terraformを使ってAuroraやElastiCacheのスペックを変更する際の挙動について書いていきます。

はじめに+結論

TerraformにてAuroraやElastiCacheを構築した後、Terraformのコード内のスペックを変更してterraform applyを実行してもスペックが変更されませんでした。

結論から先に言うと、デフォルトではメンテナンスウィンドウでの変更になっており、即時変更をしたい場合は、apply_immediately = trueを明示的に記載する必要があります。

Aurora(MySQL)での挙動の確認

Aurora(MySQL)にて挙動を確認していきます。

Aurora構築

以下のコードにて作成します。
その後、apply_immediately = trueを指定したパターンとしないパターン(defaultはfalse)でインスタンスクラスを変更して挙動を確認します。

## Auroraクラスター
resource "aws_rds_cluster" "aurora_cluster" {
  cluster_identifier     = "aurora-immediately-cluster"
  engine                 = "aurora-mysql"
  engine_version         = "8.0.mysql_aurora.3.08.2"
  master_username        = "admin"
  manage_master_user_password = true
  backup_retention_period = 7
  preferred_backup_window      = "18:30-19:30"
  preferred_maintenance_window = "tue:17:00-tue:18:00"
  deletion_protection    = false
  skip_final_snapshot    = false
  storage_encrypted      = true
  port                   = 3306
  vpc_security_group_ids = [aws_security_group.aurora_sg.id]
  db_subnet_group_name        = aws_db_subnet_group.aurora_subnet_group.name
  db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.aurora_cluster_pg.name
  enabled_cloudwatch_logs_exports = ["error", "slowquery"]
  copy_tags_to_snapshot = true
  tags = {
    Name = "aurora-immediately-test-cluster"
  }
}

## Auroraインスタンス(ライターインスタンス)
resource "aws_rds_cluster_instance" "aurora_primary" {
  cluster_identifier = aws_rds_cluster.aurora_cluster.id
  identifier         = "aurora-immediately-cluster-0"
  engine             = aws_rds_cluster.aurora_cluster.engine
  engine_version     = aws_rds_cluster.aurora_cluster.engine_version
  # インスタンスクラス
  instance_class     = "db.t4g.medium"
  db_parameter_group_name = aws_db_parameter_group.aurora_instance_pg.name
  performance_insights_enabled = false
  auto_minor_version_upgrade = true
  # 変更の即座適用
  # apply_immediately = true
  tags = {
    Name = "aurora-immediately-test-cluster-0"
  }
}

インスタンスクラスの変更

インスタンスクラスを変更してterraform applyしてみます。
apply_immediately = trueを指定しないパターンだと、即時でのインスタンスクラスは変更されずに、以下の画面にて変更予定であることが確認できました。
sr-aurora-immediately-01

apply_immediately = trueを指定するパターンだと、apply後に以下のように即時で変更されました。
※保留中の変更にも変更内容が入りました。
sr-aurora-immediately-02

ちなみに、この後にもう一度apply_immediately = trueをコメントアウトしてインスタンスタイプを変更してみると、即時で変更されてしまいます。
そのため、もう一度即時変更をせずにメンテナンスウィンドウでの変更に戻したい場合は、apply_immediately = falseと明示的に指定してください。

最後に

今回は、Terraformを使ってAuroraやElastiCacheのスペックを変更する際の挙動について記事にしました。
どなたかの参考になると幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.