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)}}
成功了!
通过 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)}}
成功了!