Upgrade von Terraform 11 auf 12. FEHLER: Nicht unterstütztes Attribut

Upgrade von Terraform 11 auf 12. FEHLER: Nicht unterstütztes Attribut

Ich habe kürzlich ein Upgrade von Terraform 11 auf 12 durchgeführt mit demTerraform 0.12 UpgradeBefehl und jetzt erhalte ich den folgenden Fehler, wenn ich einenTerraform validieren:

$ ~/terraform/us-west-2/app/production/db/rds $  terraform validate

Error: Unsupported attribute

  on main.tf line 111, in resource "aws_rds_cluster" "app_db_production":
 111:   master_password                 = data.aws_kms_secret.app_db_production.master_password

This object has no argument, nested block, or exported attribute named
"master_password".

$ ~/terraform/us-west-2/app/production/db/rds $

Die fragliche Konfiguration:

data "aws_kms_secret" "app_db_production" {
  secret {
    name    = "master_password"
    payload = "2430db63c4f1479f122fb219d179afb1"
  }
}

resource "aws_rds_cluster" "app_db_production" {
  cluster_identifier              = "app-db-production"
  engine                          = "aurora-mysql"
  database_name                   = "app"
  port                            = 3306
  master_username                 = "root"
  master_password                 = data.aws_kms_secret.app_db_production.master_password
  backup_retention_period         = 7
  preferred_backup_window         = "02:00-03:00"
  preferred_maintenance_window    = "sat:03:00-sat:04:00"
  storage_encrypted               = true
  apply_immediately               = false
  final_snapshot_identifier       = "app-db-production-final-snapshot"
  db_cluster_parameter_group_name = "app-db-production"
  db_subnet_group_name            = "app-db-production"
  vpc_security_group_ids = [data.terraform_remote_state.app_production_db_sg.outputs.app_db_production]
  lifecycle {
    create_before_destroy = true
  }
  tags = {
    Application = "db"
    Environment = "production"
    Platform    = "app"
  }
}

Dies hat in Terraform 11 perfekt funktioniert. Kann mir bitte jemand den richtigen Weg weisen?

Antwort1

Dies wird durch eine Änderung im AWS-Anbieter und nicht in der Terraform-CLI verursacht.

Speziell,Die aws_kms_secretDatenquelle ist veraltetund nur (mit einer Veraltungswarnung) in Terraform 0.11 verfügbar.

Um fortzufahren, müssen Sie zur neueren aws_kms_secretsDatenquelle migrieren. Der obige Link führt zur vollständigen Dokumentation dieser Migration. Für diese Frage ist jedoch der relevante Teil, dass die Ausgaben für diese neue Datenquelle in einem Objektattribut mit dem Namen liegen plaintext, mit der Absicht, dass Sie dann bei Bedarf die gesamte Karte als Einzelwert verwenden können, zusätzlich zum Extrahieren einzelner Werte wie zuvor.

master_password = data.aws_kms_secrets.app_db_production.plaintext["master_password"]

verwandte Informationen