Una cuenta de AWS con una sola persona se controla con un vistazo a la factura. Con cuatro o cinco personas creando cosas, no. Cada una crea "una máquina pequeña para probar", "una copia por si acaso", "una base de datos un momento", y ninguna ve lo que crean las demás. Nadie gasta mucho; entre todas, la factura se duplica en tres meses. Y cuando llega, no hay forma de saber de quién es cada euro.
La solución no es prohibir, sino dar a cada persona una cifra al mes y hacer visible cuánto lleva gastado. Es lo mismo que una tarjeta de empresa con límite: nadie se la toma a mal, y evita el 90 % de los sustos.
AWS no tiene un "presupuesto por usuario" como tal. Se puede imitar con tres piezas: una etiqueta obligatoria con el nombre de quien crea cada cosa, un presupuesto (Budgets) filtrado por esa etiqueta y una política IAM que impida crear sin etiqueta. Los pasos de abajo lo montan; las secciones siguientes explican cómo decidir las cifras y qué contar.
Antes de empezar: qué significa cada cosa
- Etiqueta
- Una pareja nombre = valor que pones a cada cosa que creas en AWS (por ejemplo, Propietario = ana) para después agrupar el gasto por ella.
- Etiqueta de asignación de costes
- Una etiqueta que has activado en Facturación para que Cost Explorer y Budgets puedan filtrar por ella. Sin activarla, la etiqueta existe pero no sirve para costes.
- Budgets (Presupuestos)
- La herramienta de AWS para fijar una cifra al mes y recibir un correo cuando el gasto real o previsto la supera. Avisa; no bloquea.
- IAM
- El sistema de usuarios y permisos de AWS. Cada persona tiene un usuario y unos permisos que dicen qué puede crear, ver o borrar.
- Política
- Un texto en formato JSON que concede o deniega permisos en IAM. Una política de denegación gana siempre a cualquier permiso concedido.
- Cost Explorer
- La pantalla de AWS que enseña el gasto en gráficas y lo deja agrupar por servicio, región, cuenta o etiqueta.
- Gasto real y previsión
- Lo que ya se ha consumido este mes y lo que AWS calcula que habrás consumido a fin de mes al ritmo actual.
- Instantánea
- Una copia de un disco o de una máquina. Se cobra por GB al mes mientras exista; es el objeto que más se acumula sin que nadie lo note.
- Bucket
- Una "carpeta" de S3 donde se guardan ficheros. Se cobra el espacio y lo que se descarga.
Paso a paso
Decide la etiqueta y díselo a todo el mundo
Elige un nombre de etiqueta y un formato de valor, y no lo cambies nunca: por ejemplo
Propietariocon el nombre de usuario de IAM de cada persona (Propietario = ana). Escríbelo en un sitio que todos vean. A partir de ahora, todo lo que se cree (máquinas, discos, instantáneas, bases de datos, buckets) lleva esa etiqueta.Activa la etiqueta como etiqueta de asignación de costes
En la consola de AWS, menú de tu cuenta, Facturación y gestión de costes, apartado Etiquetas de asignación de costes. Busca
Propietarioen la lista de etiquetas definidas por el usuario y pulsa Activar. Hasta que no está activada, Cost Explorer y Budgets no pueden filtrar por ella. Tarda hasta 24 horas en aparecer, y solo cuenta el gasto desde que se activa, no el anterior.Crea un presupuesto por persona en Budgets
En Facturación y gestión de costes, entra en Presupuestos y pulsa Crear presupuesto. Elige Personalizar, tipo Presupuesto de costes, periodo Mensual, importe fijo (por ejemplo
60dólares). En Filtros, elige la dimensión Etiqueta, clavePropietario, valorana. Ponle de nombrepresupuesto-ana.En las alertas, añade dos: cuando el gasto real supere el 80 % y cuando la previsión supere el 100 %, con el correo de esa persona y el tuyo. Repite el presupuesto para cada persona. Los dos primeros presupuestos de la cuenta son gratis; a partir de ahí cuestan unos céntimos al día cada uno.
Impide crear máquinas sin etiqueta
En IAM, Políticas, Crear política, editor JSON. Una política de denegación como esta impide crear una instancia EC2 o un volumen que no lleve la etiqueta
Propietario:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": ["ec2:RunInstances", "ec2:CreateVolume"], "Resource": ["arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*"], "Condition": { "Null": { "aws:RequestTag/Propietario": "true" } } }] }Adjunta la política al grupo de usuarios. Con una condición parecida (
StringNotEqualssobreaws:RequestTag/Propietarioy la variable${aws:username}) puedes obligar a que el valor sea el propio nombre de usuario, para que nadie apunte sus máquinas a otro. Cada servicio tiene sus acciones (rds:CreateDBInstance,lightsail:CreateInstances); empieza por EC2 y RDS, que es donde está el dinero.Limita qué tamaños se pueden crear
Un presupuesto avisa, pero no frena una máquina de 2 dólares la hora creada un viernes por la tarde. Añade otra política de denegación para
ec2:RunInstancescon la condiciónec2:InstanceTypefuera de una lista (t3.micro,t3.small,t3.medium...). Quien necesite algo más grande, lo pide. En RDS el equivalente esrds:DatabaseClass.Revisa una vez al mes
En Cost Explorer, agrupa por la etiqueta
Propietario. Verás una barra por persona y otra, "Sin etiqueta", con todo lo que se creó saltándose la norma o antes de ponerla. Esa barra es la lista de tareas: etiquetar o borrar. Dedica diez minutos al principio de cada mes y comenta las cifras con el equipo. La transparencia hace más que cualquier política.
Por qué se dispara el gasto con varias personas
No es mala fe ni descuido; es que la consola de AWS no da ninguna señal de lo que cuesta cada clic. Crear una máquina no enseña el precio al mes, solo el tipo. Una instantánea no avisa de que se cobra para siempre. Y cada persona ve la cuenta como "suya": no sabe que ya hay tres máquinas de pruebas de otros compañeros haciendo lo mismo.
Los tres patrones que más dinero cuestan:
- Crear y olvidar. Una máquina para una prueba de dos días que sigue encendida tres meses. Es, con diferencia, la causa número uno.
- Copias "por si acaso". Instantáneas antes de cada cambio, que nadie borra después.
- Tamaño por comodidad. Elegir una máquina cuatro veces más grande de lo necesario "para que vaya bien", sin saber que cuesta cuatro veces más.
Cómo plantear la cifra
Empieza por lo que ya se gasta. Mira en Cost Explorer los últimos tres meses y repártelo mentalmente por persona (si no hay etiquetas, pregunta). Lo normal es que una o dos personas tengan casi todo el gasto legítimo (producción) y el resto sea pruebas y desarrollo.
Separa dos cosas: lo compartido (los servidores de producción, la base de datos de la empresa) y lo personal (lo que cada uno crea para su trabajo). El presupuesto por usuario se aplica solo a lo segundo. Para una persona de desarrollo, una cifra razonable está entre 30 y 100 dólares al mes: da para una o dos máquinas pequeñas encendidas en horario de oficina y unas cuantas instantáneas. Para alguien que solo consulta, cero.
Pon la cifra un poco por encima de lo que gasta hoy quien más gasta de forma razonable, y bájala pasados dos meses si sobra.
Qué contar en el presupuesto de cada persona
Todo lo que esa persona cree y tenga un coste recurrente:
- Máquinas EC2 y Lightsail, por horas o por plan mensual. Recuerda que en Lightsail se cobra la máquina parada.
- Discos de esas máquinas, incluidos los que quedan sueltos al borrarlas.
- Bases de datos RDS y de Lightsail, que suelen ser el objeto más caro que crea una persona.
- Instantáneas, por GB al mes mientras existan.
- Buckets de S3: espacio y, sobre todo, lo que se descarga de ellos.
- IPs reservadas y sin asociar.
Lo que no hace falta contar al principio: transferencia de datos, registros de CloudWatch, consultas DNS. Son pequeños y difíciles de atribuir. Céntrate en lo que se crea con un botón y se olvida.
Una trampa: Budgets cuenta el gasto acumulado del mes. Lo que alguien creó el día 2 y borró el día 3 sigue sumando aunque el objeto ya no exista.
Lo que AWS no puede hacer
Conviene ser honesto con los límites del montaje:
- Budgets avisa, no bloquea. Existen las "acciones de presupuesto" que aplican una política de denegación al superar un umbral, pero son toscas y llegan tarde: el gasto ya está hecho.
- Las etiquetas dependen de que la gente las ponga. La política IAM obliga en EC2 y RDS, pero no todos los servicios admiten etiquetar en el momento de crear, y las instantáneas automáticas no heredan la etiqueta del disco.
- Lightsail etiqueta, pero su consola no obliga, y lo creado antes de activar la etiqueta de coste no se cuenta.
- Cuesta mantenerlo: cada persona nueva son un presupuesto, un valor de etiqueta y una revisión; cada persona que se va, limpiar lo suyo.
Aun así, es mucho mejor que nada.
Qué puede salir mal
El presupuesto no muestra ningún gasto
Casi siempre es que la etiqueta no está activada como etiqueta de asignación de costes, o que la activaste hace menos de un día. Compruébalo en Facturación. Y recuerda que solo cuenta desde la activación: el gasto de las máquinas etiquetadas la semana pasada no aparece retroactivamente.
Hay mucho gasto "Sin etiqueta"
Es lo normal el primer mes. Agrupa en Cost Explorer por servicio dentro de "Sin etiqueta" para ver qué es: suelen ser máquinas antiguas, discos sueltos e instantáneas. Etiquétalos (en EC2 puedes seleccionar varios y añadir etiquetas a la vez) o bórralos. Si el gasto sin etiqueta es de producción compartida, dale la etiqueta Propietario = compartido y ya está.
Alguien no puede crear una máquina
La política de denegación funciona: está intentando crear sin etiqueta o con un tamaño no permitido. En la consola, el error dice "not authorized ... with an explicit deny". Que añada la etiqueta en el paso de creación (apartado Etiquetas del asistente de EC2) o elija un tamaño de la lista. Si de verdad necesita algo mayor, se lo añades a la lista de la política.
Las instantáneas automáticas no llevan etiqueta
Las instantáneas que crea AWS Backup o Data Lifecycle Manager heredan etiquetas si lo configuras en la regla; las automáticas de Lightsail no se pueden etiquetar. Cuenta ese gasto como compartido o calcula aparte cuánto suponen (son fáciles de ver en la factura, como "snapshot").
En Simplio
En Simplio el presupuesto por usuario es una casilla en la ficha de cada persona: una cifra al mes. Todo lo que esa persona crea desde Simplio (máquinas, bases de datos, instantáneas, buckets) se apunta a su nombre con su coste aproximado y, si lo borra el mismo mes, se le descuenta. Cada usuario ve cuánto lleva gastado y cuánto le queda antes de crear nada, y recibe un aviso por correo al acercarse al tope; el administrador ve a todas las personas en la pantalla Costes. No hace falta etiquetar, activar nada en Facturación ni escribir políticas.
Combinado con los permisos por usuario y por objeto (quién puede crear, quién solo ver, quién puede borrar qué) y el registro de actividad, sabes en todo momento quién creó cada cosa y cuándo.
Lo mismo, en AWS y en Simplio
| En la consola de AWS | En Simplio | |
|---|---|---|
| Dar un tope mensual a cada persona | Etiqueta obligatoria, activarla en Facturación, un presupuesto por persona, políticas IAM: 6 pasos y mantenimiento | Una cifra en la ficha de cada usuario |
| Saber qué ha creado cada uno | Cost Explorer por etiqueta, solo lo etiquetado y desde que se activó | Lo creado desde Simplio se apunta a quien lo creó, con su coste aproximado |
| Impedir que se cree de más | Políticas de denegación por tamaño de máquina | Permisos por usuario y por objeto, y aviso al acercarse al presupuesto |