複数(> 10)の属性を持つDynamoDBテーブルのTerraform構成を作成したい。また、すべての属性をインデックスとしてglobal_secondary_index
またはlocal_secondary_index
に追加する必要はありません。しかし、terraform plan
コマンドを実行すると、次のエラーが発生します。
All attributes must be indexed. Unused attributes: ...
validateDynamoDbTableAttributes 関数のTerraformリポジトリで検証チェックを見つけました。
しかし、私が知っているように、ベストプラクティスはeach table in DynamoDB is limited to a maximum of five global secondary indexes and five local secondary indexes
from DynamoDBのセカンダリインデックスの一般的なガイドライン です。
そして、私は10以上の属性を持っているので、それは私には問題のように見えます。
すべての属性にインデックスを付ける必要がある理由と、多数の属性がある場合の対処方法を理解したいと思います。
ありがとう!
テーブルを作成するときに、事前に使用するすべての属性を定義する必要がありますnot。
attribute
ブロック内のaws_dynamodb_table
リソースは、アプリケーションで使用できる属性を定義するnotです。それらは テーブルとインデックスのキースキーマの定義 です。
たとえば、次の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
、ただし、アプリケーションで追加の属性を作成できます
これは、AttributeDefinition
で定義する必要がない限り、10以上の属性を持つことができ、インデックスを作成する必要がないと言っているので問題ありません。
混乱の説明(attribute
は混乱を招き、DynamoDB APIと一致しません)については、 this pull request を参照してください。