簡體   English   中英

Terraform aws_dynamodb_table_item - 將多行 JSON 插入到屬性中

[英]Terraform aws_dynamodb_table_item - insert multiline JSON into attribute

我有以下 terraform 配置:

resource "aws_dynamodb_table_item" "my_table" {
  table_name = aws_dynamodb_table.my_table.name
  hash_key   = aws_dynamodb_table.my_table.hash_key

  item = <<ITEM
{
  "id": {"S": "nameAndCodes"},
  "data": {"S": "[
    {
      "code": "03",
      "displayName": "name1"
    },
    {
      "code": "04",
      "displayName": "name2"
    }
  ]"}
}
ITEM
}

當計划階段執行時,我收到錯誤:

Error: Invalid format of "item": Decoding failed: invalid character '\r' in string literal

我能讓它工作的唯一方法是使整個 json 成為一行,如下所示:

"data": {"S": "[{\"code\": \"03\", \"displayName\": \"name1\"},{\"code\": \"04\", \"displayName\": \"name2\"}]"

這看起來非常丑陋且難以管理。

有誰知道如何在 <<ITEM 塊中輸入多行 JSON?

要解決該問題,您可以使用jsonencode function 設置項目值並將整個 JSON object 放在那里。 這是我項目中 Terraform 中的一個示例,它創建了一個 DynamoDB 表並放置了一個初始項。

resource "aws_dynamodb_table" "customer_table" {
name           = "customer"
billing_mode   = "PAY_PER_REQUEST"
hash_key       = "customerId"
stream_enabled = false
attribute {
  name = "customerId"
  type = "S"
 }
}

resource "aws_dynamodb_table_item" "customer_table_item" {
  table_name = aws_dynamodb_table.customer_table.name
  hash_key   = aws_dynamodb_table.customer_table.hash_key
  depends_on = [aws_dynamodb_table.customer_table]
  item = jsonencode({
  "customerId" : {
    "S" : "1"
 },
  "firstName" : {
    "S" : "John"
  },
  "lastName" : {
    "S" : "Doe"
  },
})
}

命令: terrform init terraform fmt terraform plan terraform apply

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM