如何使用条件条件通过 RDS + Terraform 进行时间点恢复?

问题描述 投票:0回答:1

我目前正在尝试使用 TF + AWS(RDS - Aurora)实施 PITR,但由于状态不一致而陷入困境。

我的 RDS 模块如下所示:

module "aurora_db_green" {
  #checkov:skip=CKV_TF_1: Ensure Terraform module sources use a commit hash
  source  = "terraform-aws-modules/rds-aurora/aws"
  version = "7.6.0"

[...]


  restore_to_point_in_time = var.restore_enabled ? {
    restore_to_time                   = var.rds_pitr_time
    source_cluster_identifier         = var.cluster_id
  } : {}

[...]

}

所以,我想根据这个var是否是

restore_enaled = true
来执行恢复。恢复在我的管道中成功发生,但是当我重新运行 terraform apply 时,会看到漂移,我猜是因为
restore_enaled = false
,然后导致
restore_to_point_in_time = {}

有任何解决方法或任何其他人能想到的选择吗?我尝试了很多方法,但都导致了同样的问题...我真的很想尝试让 PITR 使用这个条件。

提前致谢。

amazon-web-services terraform pipeline database-restore
1个回答
0
投票

在这种情况下可能有用的是使用

lifecycle
元参数。在您的示例中,可行的方法如下:

module "aurora_db_green" {
  #checkov:skip=CKV_TF_1: Ensure Terraform module sources use a commit hash
  source  = "terraform-aws-modules/rds-aurora/aws"
  version = "7.6.0"

[...]


  restore_to_point_in_time = var.restore_enabled ? {
    restore_to_time                   = var.rds_pitr_time
    source_cluster_identifier         = var.cluster_id
  } : {}

[...]

  lifecycle {
    ignore_changes = [
      restore_to_point_in_time
    ]
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.