terraform - цикл for для реплики - имя региона для глобальной таблицы
Я создаю глобальную таблицу aws с terraform с многорегиональной репликацией.
resource "aws_dynamodb_global_table" "test_table" {
depends_on = ["aws_dynamodb_table.us-east-1", "aws_dynamodb_table.us-west-2"]
provider = "aws.us-east-1"
name = "test"
replica {
region_name = "us-east-1"
}
replica {
region_name = "us-west-2"
}
}
Далее я создаю обе региональные таблицы в виде модулей с count
interpolation
и возвращая ARN для каждой таблицы.
Как мне создать Global Table как модуль, куда я добавляю ссылку на обе таблицы? depends_on
а также replica
в этом случае.
Обновлено с проверенным подходом:
//Templ1
{ region_name = "${region_name}" }
//Templ2
${value}
data "template_file" "replica_region" {
template = "${file("${path.module}/replica-region.json.tmpl")}"
count = "${length(var.regions)}"
vars {
region_name = "${element(var.regions, count.index)}"
}
}
data "template_file" "replica_regional" {
template = "${file("${path.module}/replica-regional.json.tmpl")}"
vars {
value = "${join(",", data.template_file.replica_region.*.rendered)}"
}
}
Я передаю ниже в глобальную таблицу
replica = [ "${data.template_file.replica_regional.rendered}" ]
но получаю ошибку replica.0.region_name : required field is not set
где, когда я делаю вывод для "${data.template_file.replica_regional.rendered}"
Я получаю ниже выходной.
{ region_name = "us-east-1" },{ region_name = "us-west-2" }
И если я жестко запрограммирован выше, рецепт терраформ работает просто отлично. Что мне не хватает? Я имею в виду эту статью Ссылка
1 ответ
В итоге я установил его как переменную, как показано ниже variables.tf
и использовать его непосредственно в глобальном ресурсе БД.
replica = [
{
region_name = "us-east-1"
},
{
region_name = "us-west-1"
}
]