Terraform错误:只允许在“中使用小写字母数字字符和连字符”;群集“U标识符”;rds_集群

Terraform错误:只允许在“中使用小写字母数字字符和连字符”;群集“U标识符”;rds_集群,terraform,terraform-provider-aws,amazon-aurora,terraform0.12+,terraform-modules,Terraform,Terraform Provider Aws,Amazon Aurora,Terraform0.12+,Terraform Modules,详细错误是: Error: only lowercase alphanumeric characters and hyphens allowed in "cluster_identifier" on ../rds_cluster/main.tf line 6, in resource "aws_rds_cluster" "mysql-cluster": 6: cluster_identifier = var.identi

详细错误是:

Error: only lowercase alphanumeric characters and hyphens allowed in "cluster_identifier"

  on ../rds_cluster/main.tf line 6, in resource "aws_rds_cluster" "mysql-cluster":
   6:   cluster_identifier = var.identifier
我在从terraform创建rds_集群时遇到上述错误。 我的main.tf文件具有以下代码:

provider "aws"{
  region = var.region
}

resource "aws_rds_cluster" "mysql-cluster" {
  cluster_identifier = var.identifier
  availability_zones = var.azs
  database_name      = var.db_name
  master_username    = var.username
  master_password    = var.password
}
variable.tf文件是:

variable "region"{
 default = "us-east-1"
}

variable "identifier" {
  default = "aurora-cluster"
}

variable "db_name" {
  default = "mydb"
}

variable "username" {}

variable "password" {}

variable "azs" {}
调用此“rds_群集”的模块文件是:

注意事项:

  • 我正在使用terraform 0.14
  • 当我执行terraform验证时,我得到“成功!配置有效。”
  • 然而,当我执行地形规划时,我得到了上面的错误
  • 只检查配置是否正确

    语法有效且内部一致,无论提供的变量或现有状态如何。因此,它主要用于可重用模块的常规验证,包括属性名称和值类型的正确性

    也就是说,在您的情况下,代码看起来很好,资源之间正确交互,类型正确等等。但是实际值不正确,特别是
    var.identifier
    与预期模式不匹配,但是
    validate
    根本不检查这一点


    解决方案:修复您的
    var.identifier
    以匹配
    aws\u rds\u集群
    对其
    cluster\u标识符
    的要求,即
    “mysql\u aurora\u集群”
    应该是
    “mysql aurora集群”

    Thx,它起作用了。只需将模块“mysql\u aurora\u cluster”中的变量标识符从“mysql\u aurora\u cluster”更改为“mysql aurora cluster”。不允许使用下划线。
    provider "aws"{
      region = "us-east-1"
    }
    
    data "aws_availability_zones" "azs" {
    
    }
    
    data "aws_secretsmanager_secret_version" "creds" {
      secret_id = "db-creds"
    }
    
    module "mysql_aurora_instances" {
      source               =  "../rds_instance/"
      my_count             =  2
      identifier           =  "aurora-cluster"
      cluster_identifier   =  "mysql_aurora_cluster"
      instance_class       =  "db.t2.micro"
      engine               =  "aurora-mysql"
      engine_version       =  "5.7"
    }
    
    module "mysql_aurora_cluster" {
      source               =  "../rds_cluster/"
      identifier           =  "mysql_aurora_cluster" 
      azs                  =  data.aws_availability_zones.azs.names
      db_name              =  "my_db"
      username             =  "demo"
      password             =  data.aws_secretsmanager_secret_version.creds.secret_id
    }