Подробная ошибка:
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
}
Файл 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_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
}
Обратите внимание:





terraform validate проверяет только правильность конфигурации
синтаксически действительный и внутренне непротиворечивый, независимо от любых предоставленных переменных или существующего состояния. Таким образом, он в первую очередь полезен для общей проверки повторно используемых модулей, включая правильность имен атрибутов и типов значений.
То есть в вашем случае код выглядит хорошо, ресурсы правильно взаимодействуют друг с другом, типы правильные и т.д. Но реальные значения неверны, в частности var.identifier не соответствует ожидаемому шаблону, а validate просто не проверяет это.
Решение: исправьте свой var.identifier так, чтобы он соответствовал шаблону, который aws_rds_cluster требует для своего cluster_identifier, а именно "mysql_aurora_cluster" должен быть "mysql-aurora-cluster"
Спасибо, это сработало. Просто измените идентификатор переменной в модуле «mysql_aurora_cluster» с «mysql_aurora_cluster» на «mysql-aurora-cluster». Подчеркивание не допускается.