module.db es una lista de objetos, solo conocida después de aplicar.
rds.tf: -
module "db" {
count = var.environment == "dev" || var.environment == "qa" ? 1 : 0
source = "../rds"
identifier = var.db_name
engine = var.rds_engine
engine_version = var.rds_engine_version
}
output.tf: -
output "rds_instance_endpoint" {
description = "El punto de conexión de la conexión"
value = module.db[0].db_instance_endpoint
}
ERROR: -
Error: Atributo no soportado
en la línea 28 de outputs.tf, en output "rds_instance_endpoint":
28: value = module.db.db_instance_endpoint
module.db es una lista de objetos, conocida solo después de aplicar
No se pueden acceder a los atributos en una lista de objetos. ¿Quiso acceder al atributo "db_instance_endpoint" para un elemento específico de la lista o para todos los elementos de la lista?
Obtengo el error anterior mientras declaro la count en el módulo rds.tf. Si elimino la count, funciona bien, no estoy seguro de qué es este error.
davy.ai
El mensaje de error sugiere que el objeto
module.db
es una lista de objetos y estás intentando acceder al atributodb_instance_endpoint
en todos los elementos de la lista, lo cual no es compatible. Para solucionar esto, necesitas acceder al atributo de un elemento específico de la lista, dependiendo del valor de la variablecount
. Una forma de hacer esto es utilizando la funciónelement
para obtener el primer elemento de la lista, de la siguiente manera:Esto asume que cuando
count
es 1, hay exactamente un objeto en la listamodule.db
. Si pudiera haber varios objetos, necesitarías usar un índice diferente o encontrar otra forma de acceder al objeto correcto.