Hace poco, uno de nuestros clientes se encontró con un problema: los tags de recursos que había asignado a su servicio de Amazon Elastic Container Service (ECS) no se propagaban a las tareas de ECS. Estos tags eran fundamentales, ya que el cliente los usaba para monitorear y gestionar los costos asociados a un proyecto específico.
En AWS, los Cost Allocation Tags son clave para hacer seguimiento de costos. Existen dos tipos: los generados por AWS, que se aplican automáticamente a los recursos, y los definidos por el usuario, que tú creas y aplicas. Estos últimos aportan flexibilidad a la hora de organizar los recursos.
En este artículo voy a profundizar en la causa raíz del problema y a explicar por qué los tags definidos por el usuario se comportan de manera distinta a los gestionados por ECS. También te voy a guiar para que puedas resolver este desafío y mantener una estrategia de asignación de costos efectiva.
Además, te voy a mostrar cómo mejoramos el seguimiento de costos del cliente aprovechando las potentes herramientas FinOps de DoiT.
El problema: el tagging de recursos en ECS
Para gestionar mejor tus recursos de Amazon ECS, tienes la opción de adjuntar tus propios metadatos a cada recurso mediante tags. Cada tag se compone de una clave y un valor opcional.
Nuestro cliente había creado un cluster de ECS y lo había asociado a un servicio. El servicio estaba configurado específicamente con el tag definido por el usuario WebProject:CostTracking.
Tag definido por el usuario en el servicio de ECS
Sin embargo, detectamos un problema: el tag del servicio no se propagaba a las tareas que el servicio iniciaba. Al revisar la consola de ECS, quedaba claro que las tareas lanzadas por el servicio solo recibían los tags gestionados por ECS, no los definidos por el usuario en el servicio.
Cuando usas los tags gestionados por ECS, ECS etiqueta automáticamente todas las tareas recién lanzadas con la información del cluster.
Tarea de ECS sin tag definido por el usuario
Con el comando describe-services de la AWS CLI verificamos que los tags del servicio no se estaban propagando.
$ aws ecs describe-services — services nginx-service — cluster web-cluster — region us-east-1 — query ‘services[*].propagateTags’ — output text
Al revisar los logs de CloudTrail correspondientes al evento CreateService, vimos que el parámetro para propagar los tags del servicio a las tareas no estaba configurado.
Log de CloudTrail mostrando que el tag del servicio no se propaga
Cuando llamas a la API CreateService, especificas parámetros como la definición de la tarea, la cantidad deseada de tareas, el nombre del servicio y, opcionalmente, detalles sobre balanceo de carga, descubrimiento de servicios, entre otros.
El parámetro --propagate-tags indica si los tags se propagan desde la definición de la tarea o desde el servicio hacia la tarea. Si no se especifica un valor, los tags no se propagan. El valor por defecto es NONE. Los tags solo pueden propagarse a la tarea durante su creación.
En el log de CloudTrail se ve que, al crear el servicio de ECS, no se modificó el valor por defecto. Por eso, cuando el servicio creó las tareas, sus tags no se propagaron a ellas.
Por defecto, cuando creas un servicio de ECS desde la consola, la opción predeterminada es no propagar los tags del servicio a la tarea.
El comportamiento por defecto de un servicio de ECS es no propagar tags
Al configurar el servicio, si quieres que los tags del servicio se apliquen también a las tareas, debes seleccionar esta opción del menú desplegable. En concreto, debes elegir la opción de propagación de tags desde el servicio.

Opción de tagging durante la creación del servicio
Cómo solucionarlo
Para propagar a las tareas los tags definidos por el usuario en el servicio, se requiere un nuevo despliegue. Sin embargo, esta acción debe realizarse desde la AWS CLI, no desde la consola de AWS.
El motivo es que el comando UpdateService de la CLI permite especificar el parámetro — propagate-tags. Este parámetro no está disponible en la consola de AWS, y por eso necesitamos usar la CLI para esta operación.
Se utilizó el siguiente comando para actualizar el servicio y forzar un nuevo despliegue, de modo que los tags se propagaran del servicio a las tareas.
$ aws ecs update-service — cluster <CLUSTER_NAME> — service <SERVICE_NAME> — force-new-deployment — propagate-tags SERVICE
Al revisar el log de CloudTrail correspondiente al evento UpdateService, comprobamos que el parámetro propagateTags ya estaba configurado en SERVICE.
Log de CloudTrail mostrando la actualización del servicio para propagar tags a las tareas
Esto se pudo verificar también ejecutando el comando describe-services de la CLI sobre el servicio.
Al revisar la tarea recién desplegada, vemos que tanto los tags gestionados por ECS como los definidos por el usuario se propagaron correctamente a la tarea.
Tareas de ECS con tags gestionados por ECS y definidos por el usuario.
Herramientas FinOps de DoiT
Una vez resuelto el problema de tagging del cliente, nos enfocamos en ayudarlo a mejorar su seguimiento de costos. En el mundo actual, centrado en la nube, gestionar y optimizar las operaciones cloud puede ser una tarea exigente. Ahí es donde entra DoiT, con un conjunto de valiosas herramientas FinOps diseñadas para simplificar y potenciar tus procesos de gestión cloud.
Reports
Una de las funcionalidades clave que ofrecemos son los Reports de DoiT Cloud Analytics, una potente herramienta que brinda una visualización clara de tu gasto en la nube.

Este reporte filtra los costos de AWS por recursos de ECS, aprovechando el tag definido por el usuario WebProject:CostTracking para un seguimiento de costos preciso y exacto.
Este nivel de detalle permite a nuestros clientes entender en profundidad su gasto en la nube, tomar decisiones informadas y optimizar sus operaciones cloud de manera efectiva.
Alerts
En DoiT sabemos lo importante que es una gestión proactiva de costos en las operaciones cloud. Por eso ayudamos a este cliente a configurar alertas de facturación para que pudiera vigilar de cerca su gasto en ECS.
Desde la consola de DoiT creamos una alerta que monitoreaba el gasto diario en ECS. Definimos la condición: si el gasto en ECS superaba los €5 por día, el cliente recibiría una notificación por email.


Las alertas están diseñadas para notificar a nuestro cliente por email cuando su gasto diario en ECS alcanza un umbral predefinido.

Notificación por email activada por la alerta
Con esta configuración, nuestro cliente puede monitorear sus costos cloud de manera efectiva y actuar a tiempo si los costos suben más de lo esperado.
Esta es solo una de las muchas formas en que ayudamos a nuestros clientes a optimizar sus operaciones cloud y a sacarle el máximo provecho a sus inversiones en la nube.
Si quieres saber más sobre cómo DoiT puede ayudarte a gestionar tus recursos cloud, o explorar nuestros productos y servicios FinOps, no dudes en ponerte en contacto.