1
\$\begingroup\$

So I am working with Terraform and I feel like there must be a faster or, at the very least, a prettier way to perform the operation I'm attempting.

For some boilerplate, I have a data block that looks like the following:

data "aws_subnet_ids" "lambda_subnet_ids" {
  count  = length(var.lambda_subnet_tags)
  vpc_id = ...
}

From the results of this data block, I want to retrieve the first value from each set and combine it into another list. Here's how my team approached it before me. I wrapped it in a locals block to made it easier to see the use-case:

locals {
  lambda_subnet_ids = flatten(
    [
      for subnets in data.aws_subnet_ids.lambda_subnet_ids :
        [
          element(tolist(subnets.ids), 1)
        ]
    ]
  )
}

Now, this works. It just looks awful. I feel like there has to be a nicer way to perform this same operation, but I am not familiar with HCL well enough to know what to look for.

Side note, this really should have the tags HCL and Terraform, but I do not have the reputation required to create them.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.