Ошибка Terraform Dynamodb - все атрибуты должны быть проиндексированы
Я пытаюсь создать простую таблицу Dynamodb, используя следующие модули ресурсов terraform.
Получите следующую ошибку при запуске terraform: Все атрибуты должны быть проиндексированы. Неиспользуемые атрибуты: ["pactitle" "ipadress" "Timestamp"].зачем нам индексировать все атрибуты? Как это решить?
resource "aws_dynamodb_table" "this" {
count = var.create_table ? 1 : 0
name = var.name
billing_mode = var.billing_mode
hash_key = var.hash_key
range_key = var.range_key
read_capacity = var.read_capacity
write_capacity = var.write_capacity
//stream_enabled = var.stream_enabled
//stream_view_type = var.stream_view_type
dynamic "attribute" {
for_each = var.attributes
content {
name = attribute.value.name
type = attribute.value.type
}
}
server_side_encryption {
enabled = var.server_side_encryption_enabled
kms_key_arn = var.server_side_encryption_kms_key_arn
}
tags = merge(
var.tags,
{
"Name" = format("%s", var.name)
},
)
timeouts {
create = lookup(var.timeouts, "create", null)
delete = lookup(var.timeouts, "delete", null)
update = lookup(var.timeouts, "update", null)
}
}
вызывающий модуль
module "dynamodb_table" {
source = "./../../../modules/dynamodb"
name = "pack-audit-cert"
hash_key = "id"
create_table= true
read_capacity=5
write_capacity=5
billing_mode = "PROVISIONED"
range_key = "pacid"
attributes = [
{
name = "id"
type = "N"
},
{
name = "pacid"
type = "S"
},
{
name = "pactitle"
type = "S"
},
{
name = "ipadress"
type = "S"
},
{
name = "Timestamp"
type = "S"
}
]
}
Спасибо
1 ответ
Это сообщение об ошибке немного вводит в заблуждение. Вы должны определять только индексированные атрибуты при создании таблицы. Поскольку DynamoDB - это база данных без схемы, она не заботится о других атрибутах во время создания таблицы.