Me gustaría crear parámetros de AWS SSM utilizando Terraform, y los parámetros se pasan como variables de entrada.
Veo que hay una función for_each, pero ¿cómo se puede aplicar esto a las propiedades de nivel superior dentro de un recurso de terraformación? Según la documentación, el uso de for_each parece estar restringido a no funcionar en las propiedades de nivel superior de un recurso, ¿estoy malinterpretando?
Esto es lo que estoy tratando de lograr:
principal.tf
resource "aws_ssm_parameter" "ssm_parameters" { for_each = var.params content { name = name.value type = "String" overwrite = true value = paramValue.value tags = var.tags lifecycle { ignore_changes = [ tags, value ] } } }variables.tf
variable "params" { default = [ { name = "albUrl" paramValue = "testa" }, { name = "rdsUrl1" paramValue = "testb" }, { name = "rdsUrl2" valparamValueue = "testc" }, ] }Puede usar para cada uno, pero debe modificar su sintaxis y corregir la sintaxis en su var.params :
variable "params" { default = [ { name = "albUrl" paramValue = "testa" }, { name = "rdsUrl1" paramValue = "testb" }, { name = "rdsUrl2" paramValue = "testc" }, ] }Luego, para usar para cada uno, y cree 3 parámetros ssm:
resource "aws_ssm_parameter" "ssm_parameters" { for_each = {for v in var.params: v.name => v.paramValue} type = "String" name = each.key value = each.value overwrite = true } En lo anterior, debe proyectar su lista (mapa) en un mapa, ya que se requiere para for_each .