Ошибка терраформирования: в rds_cluster «cluster_identifier» разрешены только строчные буквенно-цифровые символы и дефисы

#terraform #terraform-provider-aws #amazon-aurora #terraform0.12 #terraform-modules

#terraform #terraform-provider-aws #amazon-aurora #terraform0.12 #terraform-модули

Вопрос:

Подробная ошибка:

 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
 

Я получаю указанную выше ошибку при создании rds_cluster из terraform.
Мой 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
}
 

Переменная.файл tf — это:

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

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

variable "db_name" {
  default = "mydb"
}

variable "username" {}

variable "password" {}

variable "azs" {}
 

И файл модуля, который вызывает этот «rds_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
}
 

Указывает на примечание:

  1. Я использую terraform 0.14
  2. Когда я выполняю проверку terraform, я получаю «Успех! Конфигурация действительна «.
  3. Однако, когда я выполняю план терраформирования, я получаю указанную выше ошибку

Ответ №1:

terraform validate проверяет только, является ли конфигурация

синтаксически допустимый и внутренне согласованный, независимо от любых предоставленных переменных или существующего состояния. Таким образом, это в первую очередь полезно для общей проверки повторно используемых модулей, включая правильность имен атрибутов и типов значений.

То есть в вашем случае код выглядит хорошо, ресурсы правильно взаимодействуют друг с другом, типы правильные и т.д. Но фактические значения неверны, в частности var.identifier , не соответствует ожидаемому шаблону, но validate просто не проверяет это.

Решение: исправьте свой var.identifier шаблон так, чтобы он соответствовал aws_rds_cluster требованиям к нему cluster_identifier , а именно "mysql_aurora_cluster" должен быть "mysql-aurora-cluster"

Комментарии:

1. Спасибо, это сработало. Просто измените идентификатор переменной в модуле «mysql_aurora_cluster» с «mysql_aurora_cluster» на «mysql-aurora-cluster». Подчеркивание не допускается.