Terraform:将项目添加到 DynamoDB Table

Terraform: Add item to a DynamoDB Table

通过 Terraform 将元组和键对值项目添加到 DynamoDB 数据库的正确方法是什么?

我正在这样尝试:

resource "aws_dynamodb_table_item" "item" {
    table_name = aws_dynamodb_table.dynamodb-table.name
    hash_key = aws_dynamodb_table.dynamodb-table.hash_key

    for_each = {
        "0" = {
            location = "Madrid"
            coordinates = [["lat", "40.49"], ["lng", "-3.56"]]
            visible = false
            destinations = [0, 4]
        }
    }

    item = <<ITEM
    {
        "id": { "N": "${each.key}"},
        "location": {"S" : "${each.value.location}"},
        "visible": {"B" : "${each.value.visible}"},
        "destinations": {"L" : [{"N": "${each.value.destinations}"}]
    }
    ITEM
}

我收到消息:

each.value.destinations 是包含 2 个元素的元组 │ │ 不能在字符串模板中包含给定值:需要字符串。

我也不知道如何添加坐标变量。

谢谢!

TLDR:我认为这里的问题是您试图放入 L(N) - 即数值列表,而您当前的 Terraform 代码试图将所有目的地放入一个 N /号码。

而不是:

[{"N": "${each.value.destinations}"}]

您需要对目的地进行一些迭代并构建 {"N": ...} 个目的地。

列表应该是这样的:

"destinations": {"L": [{ "N" : 1 }, { "N" : 2 }]}

您正在尝试通过

"destinations": {"L": [{ "N" : [0,4] }]}

此外,您还缺少目的地键中的最后一个 }

"destinations": {"NS": ${jsonencode(each.value.destinations)}}

成功了!