如何从任意数量的输入参数创建 RDS 参数组?

How do I create RDS parameter groups from an arbitrary number of input parameters?

我有四种不同的环境:

参数组值因环境而异。以下值将进入每个环境的变量文件。

下面是示例 AWS RDS 参数组的参数。在其他环境下,参数可能多了也可能少了:

parameter {
  name = "character_set_client"
  value = "utf8mb4"
}

parameter {
  name = "character_set_connection"
  value = "utf8mb4"
}

parameter {
  name = "character_set_server"
  value = "utf8mb4"
}

parameter {
  name = "log_bin_trust_function_creators"
  value = "1"
}

我很好奇如何在变量中表示它以及如何编写资源以使用这些变量来制作具有任意数量参数的 RDS 参数组。

如何从任意数量的输入参数创建 RDS 参数组?

您可以使用动态块:

dynamic "parameter" {
    for_each = var.parameters
    content {
      name         = parameter.value.name
      value        = parameter.value.value
    }
  }

变量可以是地图列表:

variable "parameters" {
  type        = list(map(string))
  default     = []
}

terraform.tfvars:

parameters = [ 
  {
  name = "character_set_connection"
  value = "utf8mb4"
  },
  {
  name = "character_set_server"
  value = "utf8mb4"
  },
  {
  name = "log_bin_trust_function_creators"
  value = "1"
  }
]