Trying to upgrade a module to V12. I am currently getting the above error. Question is, can i define a map list in the module rather than declaring as a variable ?
security_groups = [
module.ecs.asg_security_group_id,
aws_security_group.default_security_group.id,
aws_security_group.custom_security_group.id,
aws_security_group.pa_security_group.id,
aws_security_group.mashery_security_group.*.id,
]
If so, how can i go about this, many thanks
Hi @dannykitchen,
I’m not sure exactly how your question relates to the error message in the summary because the summary message is referring to cidr_blocks
but your question is referring to security_groups
. If you could share a little more detail about what you are doing (ideally, a full configuration, exactly what Terraform commands you ran, and what output you saw) then we might be able to help further.
With that said, the “element 0: string required” error message usually occurs when you have created a list of lists in a situation where a provider is expecting a list of strings. For example, if you were to write something like this:
cidr_blocks = [var.cidr_blocks]
If var.cidr_blocks
were a list itself, e.g. ["192.168.0.0/16"]
, then this would evaluate like [["192.168.0.0/16"]]
, which would cause the error you saw because element zero of the outer list is itself a list, not a string.
Instead, that should be written like this:
cidr_blocks = var.cidr_blocks
If you need to combine multiple lists together to produce a value, you can use the concat
function.
4 Likes
Apologies, wrong block
egress {
from_port = 0
to_port = 0
protocol = “-1”
cidr_blocks = [“0.0.0.0/0”]
}