Terraform + DynamoDB: создание атрибутов из переменных - PullRequest
0 голосов
/ 02 мая 2018

Я хочу написать модуль 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, и их имена должны быть прочитаны из переменных.

1 Ответ

0 голосов
/ 02 мая 2018

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

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

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

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

...