У меня есть модуль terraform, который выполняет делегирование домена. Для нескольких переменных существует некоторая проверка по жестко заданному значению для проверки того, что пользователь использует допустимые входные данные, например:
resource "null_resource" "validate_region" {
count = contains(local.regions, var.region) == true ? 0 : "Please provide a valid AWS region. E.g. (us-west-2)"
}
с local.regions
в жестком коде и var.region
в качестве пользователя переменная Приведенный выше код работает так: когда пользователь устанавливает переменную неправильно, он выдает ошибку, подобную этой:
Error: Incorrect value type
on .terraform/foo/main.tf line 46, in resource "null_resource" "validate_region":
46: count = contains(local.regions, var.region) == true ? 0 : "Please provide a valid AWS region. E.g. (us-west-2)"
Invalid expression value: a number is required.
Теперь мне нужно проверить, что учетная запись AWS, которую использует пользователь в настоящее время, является правильной. , В этом случае пользователь должен установить идентификатор учетной записи правильной учетной записи в своих переменных, и мой код должен извлечь идентификатор учетной записи учетной записи, на которой запущен модуль, и сравнить ее с пользовательской переменной. Я пробовал что-то вроде этого:
data "aws_caller_identity" "account" {}
resource "null_resource" "validate_account" {
count = data.aws_caller_identity.account.account_id == var.primary_account_id ? 0 : "Please check that you are using the AWS creds for the primary account for this domain."
}
data "aws_route53_zone" "primary" {
name = local.primary_name
}
с различными изменениями синтаксиса в части "{data.aws_caller_identity.account.account_id == var.primary_account_id}" ? 0
, пытаясь заставить работать логику c, но не повезло. Я хотел бы, чтобы он выдавал ошибку, как это делает валидация региона, где будет отображаться сообщение об ошибке, которое я написал. Вместо этого (в зависимости от синтаксиса) он будет работать, как и ожидалось, для правильной учетной записи и выдаст ошибку Error: no matching Route53Zone found
для неправильной учетной записи, ИЛИ он выдаст совершенно другую ошибку, предположительно, из-за того, что синтаксис все испортил.
Как мне заставить это работать? это возможно?