terraform:如何覆盖AWS RDS最终快照

terraform:如何覆盖AWS RDS最终快照,terraform,amazon-rds,terraform-provider-aws,Terraform,Amazon Rds,Terraform Provider Aws,在tf文件中具有以下DB资源: resource "aws_db_instance" "app_db" { count = local.db_count allocated_storage = 5 max_allocated_storage = 10 engine = "postgres" instance_class = "db.t3.micro&qu

在tf文件中具有以下DB资源:

resource "aws_db_instance" "app_db" {
  count = local.db_count

  allocated_storage     = 5
  max_allocated_storage = 10
  engine                = "postgres"
  instance_class        = "db.t3.micro"
  name                  = var.db_creds["db_name"]
  port                  = 5432
  username              = var.db_creds["username"]
  password              = var.db_creds["password"]

  db_subnet_group_name   = aws_db_subnet_group.database_sg.name
  vpc_security_group_ids = [aws_security_group.app.id]

  final_snapshot_identifier = "${var.environment_deployment_tag}-app-db-snaphot"
}
销毁数据库资源后,我收到以下错误:

DBSnapshotAlreadyExists:无法创建快照,因为标识符为app db snaphot的快照已存在

我知道这是因为具有此类标识符的快照已经存在,但我想问是否有方法覆盖以前的快照

如果没有,并且所有快照都应该有唯一的名称,我想这样的格式应该可以:
final\u snapshot\u identifier=“${var.environment\u deployment\u tag}-app db snaphot-${timestamp()}”


我想知道如何清理以前的快照,使RDS上的快照不会太多?管理最终快照的最佳方法是什么?

如果确实不需要最终快照,可以使用以下方法跳过它:

skip_final_snapshot  = true

如果您确实希望维护最终数据库快照并使用
final\u snapshot\u identifier=“${var.environment\u deployment\u tag}-app db snaphot-${timestamp()}”
代码段,请确保添加此
lifecycle
块,以便后续地形规划不会每次都因使用
timestamp()而看到“更改”
功能:

lifecycle {
    ignore_changes = [
      final_snapshot_identifier,
    ]
}
您可能还需要将
timestamp()
函数中的
字符替换为
-
字符,方法如下:

final_snapshot_identifier=“${var.environment_deployment_tag}-app db snaphot-${replace(timestamp(),“:”,“-”)}”