I have an application that can read a JSON file from a DynamoDB table item at startup and use it for configuration. I have a dynamodb table that has 2 columns, “id” and “json”.
I need to insert a value into that file using the template function for Terraform for a server url. I’m trying to load the file into DynamoDB with the “aws_dynamodb_table_item” resource after its rendered with the correct server url.
data "template_file" "config_tpl" {
template = file("${path.root}/config/config.json.tpl")
vars = {
server_url = aws_route53_record.cloudfront_cname.fqdn
}
}
resource "aws_dynamodb_table_item" "config_json" {
table_name = aws_dynamodb_table.my_table.id
hash_key = "id"
item = <<ITEM
{
"id": {"S": "config"},
"json": {"S": "${data.template_file.config_json_tpl.rendered}"}
}
ITEM
}
I’m able to do this in the console, however, when running through TF, I get the following error:
Error: Invalid format of "item": Decoding failed: invalid character '\n' in string literal
on dynamodb.tf line 41, in resource "aws_dynamodb_table_item" "config_json":
41: item = <<ITEM
42: {
43: "id": {"S": "config"},
44: "json": {"S": "${data.template_file.config_json_tpl.rendered}"}
45: }
46: ITEM
Is it possible to load an entire JSON file as an item using this resource?