[英]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.