Terraform 11에서 12로 업그레이드. 오류: 지원되지 않는 속성

Terraform 11에서 12로 업그레이드. 오류: 지원되지 않는 속성

최근에 다음을 사용하여 Terraform 11에서 12로 업그레이드했습니다.테라폼 0.12업그레이드명령을 실행했는데 이제 실행하면 다음 오류가 발생합니다.테라폼 검증:

$ ~/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 $

문제의 구성:

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"
  }
}

이는 Terraform 11에서 완벽하게 작동했습니다. 누군가 제게 올바른 방향을 알려줄 수 있나요?

답변1

이는 Terraform CLI가 아닌 AWS 공급자의 변경으로 인해 발생합니다.

구체적으로,그만큼aws_kms_secret 소스가 더 이상 사용되지 않습니다.Terraform 0.11에서만 사용 가능합니다(지원 중단 경고 포함).

계속하려면 최신 aws_kms_secrets데이터 소스로 마이그레이션해야 합니다. 위 링크는 해당 마이그레이션에 대한 전체 문서에 대한 것이지만, 이 질문의 목적과 관련된 부분은 이 새로운 데이터 소스의 출력이 라는 객체 속성에 있다는 것입니다. plaintext그런 다음 전체 맵을 다음과 같이 사용할 수 있습니다. 이전처럼 개별 값을 추출하는 것 외에도 필요한 경우 단일 값을 사용할 수 있습니다.

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

관련 정보