【问题标题】:Terraform: Add item to a DynamoDB TableTerraform:将项目添加到 DynamoDB 表
【发布时间】:2022-01-14 04:17:05
【问题描述】:

通过 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 个元素的元组 │ │ 不能在字符串模板中包含给定值:需要字符串。

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

谢谢!

【问题讨论】:

    标签: amazon-dynamodb terraform


    【解决方案1】:

    列表应该是这样的:

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

    你正在尝试通过

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

    您还缺少destinations 键中的最后一个}

    【讨论】:

      【解决方案2】:

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

      代替:

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

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

      【讨论】:

        【解决方案3】:
        "destinations": {"NS": ${jsonencode(each.value.destinations)}}
        

        成功了!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-18
          • 1970-01-01
          • 2022-08-15
          • 2018-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多