Terraform + DynamoDB: все атрибуты должны быть проиндексированы - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу создать конфигурацию Terraform для таблицы DynamoDB с несколькими (> 10) атрибутами. И мне не нужно добавлять все атрибуты в качестве индекса global_secondary_index или local_secondary_index. Но когда я запускаю команду terraform plan, у меня появляется следующая ошибка:

All attributes must be indexed. Unused attributes: ...

Я нашел проверку валидации в репозитории Terraform в функции validateDynamoDbTableAttributes .

Но, как я знаю, лучшая практика заключается в том, что each table in DynamoDB is limited to a maximum of five global secondary indexes and five local secondary indexes из Общие рекомендации для вторичных индексов в DynamoDB .

И поскольку у меня более 10 атрибутов, это выглядит для меня проблемой.

Что бы я хотел понять, почему все атрибуты должны быть проиндексированы и что делать в случае, если у вас есть большое количество атрибутов.

Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Вы не должны определять каждый атрибут, который хотите использовать заранее при создании таблицы.

attribute блоков внутри aws_dynamodb_table ресурсов не определяют, какие атрибуты вы можете использовать в своем приложении. Они определяют схему ключа для таблицы и индексов .

Например, следующий Terraform определяет таблицу только с хеш-ключом:

resource "aws_dynamodb_table" "test" {
  name           = "test-table-name"
  read_capacity  = 10
  write_capacity = 10
  hash_key       = "Attribute1"

  attribute {
    name = "Attribute1"
    type = "S"
  }
}

Каждый элемент в этой таблице имеет Attribute1, но вы можете создавать дополнительные атрибуты с вашим приложением Two items, both have Attribute1, but differing custom attributes

Это означает, что вы можете иметь свои 10+ атрибутов, если вам не нужно определять их в AttributeDefinition, и, поскольку вы говорите, что они не нужны для индексации, все будет в порядке.

Для некоторого обсуждения путаницы (attribute сбивает с толку и не соответствует API DynamoDB), см. этот запрос на извлечение .

...