tavor999
tavor999

Reputation: 477

Terraform load json object from AWS S3

I have a need to load data from a non public S3 bucket. Using this JSON I wanted be able to loop over lists within the terraform.

Example:

{
  info: [
    "10.0.0.0/24",
    "10.1.1.0/24",
    "10.2.2.0/24"
  ]
}

I can retrieve the JSON fine using the following:

data "aws_s3_bucket_object" "config" {
  bucket = "our-bucket"
  key = "global.json"
}

What I cannot do is utilize this as a map|list within terraform so that I can utilize this data. Any ideas?

Upvotes: 0

Views: 1100

Answers (1)

tavor999
tavor999

Reputation: 477

After a good deal of trial and error I figured out a solution. Note that for this to work it appears the JSON source needs to be simple, by that I mean no nested objects like lists or maps.

{
 foo1: "my foo1",
 foo2: "my foo2",
 foo3: "my foo3"
}

data "aws_s3_bucket_object" "config-json" {
  bucket = "my-bucket"
  key = "foo.json"
}

data "external" "config-map" {
  program = ["echo", "${data.aws_s3_bucket_object.config-json.body}"]
}

output "foo" {
  value = ["${values(data.external.config-map.result)}"]
}

Upvotes: 1

Related Questions