Ошибка ValidationException при развертывании AWS рабочих пространств через terraform - PullRequest
2 голосов
/ 20 марта 2020

Я пытался развернуть инфраструктуру AWS WorkSpaces, используя Terraform. Сам код проходит проверку проверки и планирования, но он не применяется.

Источник:

module "networking" {
  source = "../../modules/networking"
  region = var.region
  main_cidr_block = var.main_cidr_block
  cidr_block_1 = var.cidr_block_1
  cidr_block_2 = var.cidr_block_2
  size = var.size
}

resource "aws_directory_service_directory" "main" {
  name     = var.aws_ds_name
  password = var.aws_ds_passwd
  size     = var.size
  type = "SimpleAD"
  vpc_settings {
    vpc_id     = module.networking.main_vpc
    subnet_ids = ["${module.networking.private-0}", "${module.networking.private-1}"]
  }
}

resource "aws_workspaces_directory" "main" {
  directory_id = aws_directory_service_directory.main.id
  subnet_ids   = ["${module.networking.private-0}", "${module.networking.private-1}"]
}

resource "aws_workspaces_ip_group" "main" {
  name        = "Contractors."
  description = "Main IP access control group"


  rules {
    source      = "10.0.0.0/16"
    description = "Contractors"
  }
}

Код ошибки:

ValidationException: 2 validation errors detected: Value at 'password' failed to satisfy constraint: Member must satisfy regular expression pattern: (?=^.{8,64}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9\s])(?=.*[a-z])|(?=.*[^A-Za-z0-9\s])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9\s]))^.*; Value '' at 'name' failed to satisfy constraint: Member must satisfy regular expression pattern: ^([a-zA-Z0-9]+[\\.-])+([a-zA-Z0-9])+$
        status code: 400, request id: 073f6e61-775e-4ff9-a88e-e1eab97f8519

  on modules/workspaces/workspaces.tf line 10, in resource "aws_directory_service_directory" "main":
  10: resource "aws_directory_service_directory" "main" {

Я знаю, что это является проблемой регулярного выражения с именем пользователя / паролями, но я пока не установил пользователей, и я сбросил политики безопасности по причинам тестирования.

У кого-нибудь была эта проблема раньше?

1 Ответ

4 голосов
/ 20 марта 2020

API AWS для службы каталогов налагает ограничение на атрибут password и соответствует тому, что вы видите в этой ошибке при запуске terraform apply:

Пароль

Пароль для администратора каталога. В процессе создания каталога создается учетная запись администратора каталога с именем пользователя Administrator и этим паролем.

Если вам нужно изменить пароль для учетной записи администратора, вы можете использовать вызов API ResetUserPassword.

Тип: String

Шаблон:

(?=^.{8,64}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9\s])(?=.*[a-z])|(?=.*[^A-Za-z0-9\s])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9\s]))^.*

Обязательно: Да

Обычно Terraform может проверить это с помощью команд плана или проверки, но, к сожалению, AWS провайдер в настоящее время пропускает соответствующий ValidateFunc, поэтому он потерпит неудачу только во время подачи заявки, а не в минуту.

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

...