Terraform + DynamoDB: создание атрибутов из переменных

Я хочу написать модуль terraform, который будет создавать таблицы DynamoDb. Предполагается, что атрибуты будут считываться из .tfvars или переменной по умолчанию вместо того, чтобы быть уже названными в .tf, как в руководстве по ресурсам здесь

Чтобы объяснить дальше, предположим, что для достижения этого псевдокода используется список атрибутов:

resource "aws_dynamodb_table" "basic-dynamodb-table" {
name = "GameScores"
... #Other required feilds
...
... 
#  attributes is a list of names
  for(attribute_name:${length(var.attributes)}){
    attribute {
      name = "${var.attributes[i]}"
      type = "N"
    }
  }
}

Как я могу перебирать список атрибутов и создавать атрибут {} во время планирования / применения терраформирования? Количество блоков атрибутов не может быть статическим, как показано в документации terraform, и их имена должны считываться из переменных.


person Baghel    schedule 01.05.2018    source источник
comment
В чем именно заключается ваш вопрос?   -  person ThomasVdBerge    schedule 02.05.2018
comment
@ThomasVdBerge отредактировал сейчас   -  person Baghel    schedule 02.05.2018


Ответы (1)


При создании таблицы DynamoDB единственные атрибуты, которые вам нужно указать, - это ключ раздела и, необязательно, ключ сортировки. Все остальные атрибуты хранятся как часть каждого документа (или элемента), который вы храните в таблице.

То же самое относится и к глобальным вторичным индексам. Вам нужно только указать ключ раздела и ключ сортировки для каждого индекса.

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

Наконец, это не ясно из вопроса, но, пожалуйста, не используйте Teraform для загрузки данных в свою таблицу. Это не тот инструмент!

person Mike Dinescu    schedule 02.05.2018
comment
Спасибо @Mike. Вы правы, и это не предназначалось для загрузки данных. Мне пришлось написать модуль, который другие могут использовать повторно всякий раз, когда им приходилось создавать таблицу Dynamodb, просто меняя значения в файлах переменных. Итак, скажем, нужен ли ключ сортировки или нет, должно быть определено vars.sort_key_name == "" ? 0:1, а затем создать для него блок атрибутов. - person Baghel; 02.05.2018