web-dev-qa-db-fra.com

Terraform + DynamoDB: tous les attributs doivent être indexés

Je veux créer une configuration Terraform pour la table DynamoDB avec plusieurs (> 10) attributs. Et je n'ai pas besoin d'ajouter tous les attributs en tant qu'index à global_secondary_index ou local_secondary_index. Mais quand je lance terraform plan commande J'ai la prochaine erreur:

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

J'ai trouvé la vérification de validation dans le référentiel Terraform dans la fonction validateDynamoDbTableAttributes .

Mais comme je le sais, la meilleure pratique est que each table in DynamoDB is limited to a maximum of five global secondary indexes and five local secondary indexes de Directives générales pour les index secondaires dans DynamoDB .

Et comme j'ai plus de 10 attributs, cela me semble un problème.

Ce que j'aimerais comprendre pourquoi tous les attributs doivent être indexés et que faire si vous avez un grand nombre d'attributs.

Merci!

14

Vous n'avez pas à définir chaque attribut que vous souhaitez utiliser dès la création de votre table.

attribute blocs à l'intérieur aws_dynamodb_table les ressources ne définissent pas les attributs que vous pouvez utiliser dans votre application. Ils sont définissant le schéma de clé pour la table et les index .

Par exemple, le Terraform suivant définit une table avec uniquement une clé de hachage:

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

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

Chaque élément de ce tableau a Attribute1, mais vous pouvez créer des attributs supplémentaires avec votre application Two items, both have Attribute1, but differing custom attributes

Cela signifie que vous pouvez avoir vos 10+ attributs tant que vous n'avez pas besoin de les définir dans un AttributeDefinition, et puisque vous dites que vous n'avez pas besoin qu'ils soient indexés, tout ira bien.

Pour une discussion de la confusion (attribute prête à confusion et ne correspond pas à l'API DynamoDB), voir cette demande de tirage .

20
Eric M. Johnson