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

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

      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
}

Обратите внимание:

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

1 ответ

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

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

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

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

Другие вопросы по тегам