Saltar al contenido
aprendeaws.dev

Módulo 12 · Costos, facturación y soporte/Lección 75

Gobierno de costos en organizaciones

Etiquetas obligatorias, categorías de costos, asignación de costos compartidos y cobro interno por equipo o cliente.

Al terminar podrás

  • →Imponer etiquetas con políticas de etiquetas y SCP
  • →Agrupar gastos con categorías de costos
  • →Repartir costos compartidos y hacer cobro interno
  • →Elegir quién paga la transferencia con Requester Pays

Con una cuenta, saber quién gastó es fácil. Con cien cuentas y veinte equipos, la factura se vuelve una discusión. El gobierno de costos responde tres preguntas: de quién es cada recurso, cómo se reparte lo compartido y quién paga al final. Las herramientas básicas (Budgets, Cost Explorer, CUR) están en controlar costos. Aquí van las reglas que las vuelven útiles en una organización.

Una estrategia de etiquetas

Antes de etiquetar, separa por cuentas: una cuenta por carga de trabajo y entorno es el límite de costo más fuerte y no depende de que nadie recuerde una etiqueta. Encima, define pocas etiquetas obligatorias y un diccionario de valores:

EtiquetaPara qué sirve
OwnerA quién llamar por este recursoUn correo de equipo, no de una persona que puede irse
EnvironmentProducción, pruebas o desarrolloValores fijos: prod, staging, dev
CostCenterA qué presupuesto se cargaEl código que usa finanzas, no un nombre libre
ApplicationA qué sistema perteneceAgrupa recursos de varios servicios en un mismo producto

Las claves y los valores distinguen mayúsculas: CostCenter y costcenter son dos etiquetas distintas en los informes. Pon las etiquetas en la infraestructura como código, no a mano: las etiquetas de una pila de CloudFormation se propagan a los recursos de la pila que admiten etiquetas.

Imponer etiquetas: prevenir, bloquear y detectar

CriterioPolíticas de etiquetasSCP con aws:RequestTagRegla required-tags
Qué haceEstandariza claves, mayúsculas y valores permitidosNiega la creación si falta la etiqueta en la peticiónMarca como no conformes los recursos sin las etiquetas
Tipo de controlPreventivo para valores; reporte para faltantesPreventivoDetectivo, con remediación opcional
Recursos sin etiquetasNo los evalúa ni los bloqueaLos bloquea al crearseLos encuentra, incluso los que ya existían
Dónde viveAWS OrganizationsAWS OrganizationsAWS Config en cada cuenta, o un paquete de conformidad

Una política de etiquetas dice cómo debe escribirse una etiqueta cuando se aplica. Con enforced_for, una operación de etiquetado no conforme en ese tipo de recurso falla. Con report_required_tag_for marcas la etiqueta como obligatoria para el reporte, y CloudFormation (con el hook AWS::TagPolicies::TaggingComplianceValidator), Terraform o Pulumi pueden avisar o bloquear un despliegue al que le falte.

{
  "tags": {
    "CostCenter": {
      "tag_key":   { "@@assign": "CostCenter" },
      "tag_value": { "@@assign": ["CC-100", "CC-200", "CC-300"] },
      "enforced_for":            { "@@assign": ["ec2:instance"] },
      "report_required_tag_for": { "@@assign": ["ec2:ALL_SUPPORTED"] }
    }
  }
}

Para bloquear la creación de recursos sin etiqueta desde la consola o la API, usa una SCP con la condición aws:RequestTag. La condición Null en true significa «la etiqueta no viene en la petición»:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExigirCostCenterAlCrearInstancias",
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "Null": { "aws:RequestTag/CostCenter": "true" }
      }
    },
    {
      "Sid": "ImpedirQuitarCostCenter",
      "Effect": "Deny",
      "Action": "ec2:DeleteTags",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": { "aws:TagKeys": ["CostCenter"] }
      }
    }
  ]
}

La segunda declaración impide quitar la etiqueta después, también a los administradores; si necesitas una excepción, agrégala con una condición sobre aws:PrincipalArn. Escribe una declaración por servicio: cada uno nombra distinto sus acciones de creación. Por último, la regla administrada required-tags de AWS Config revisa hasta seis claves y encuentra lo que se creó antes de las reglas.

Activar, agrupar y repartir

Una etiqueta solo aparece en Cost Explorer y en el CUR después de activarla como etiqueta de asignación de costos en la cuenta de administración. Después, AWS Cost Categories agrupa el gasto en las unidades que entiende finanzas. Cada categoría tiene reglas que combinan cuenta, etiqueta, servicio, tipo de cargo u otras categorías, y un valor por defecto para lo que no encaje. Por ejemplo, la categoría UnidadDeNegocio con valores Retail, Banca y Plataforma. Las categorías se usan como filtro en Cost Explorer, en Budgets y como columna en el CUR.

Lo compartido se reparte con reglas de cargo dividido (split charge rules): el costo del valor Plataforma se distribuye entre los demás de forma proporcional a su gasto, con porcentajes fijos o en partes iguales. Ojo: ese reparto solo se ve en la página de Cost Categories; no cambia Cost Explorer, Budgets ni el CUR.

Los contenedores son el caso difícil: diez equipos comparten el mismo nodo de EC2. Los datos de asignación de costos divididos (split cost allocation data) para ECS y EKS agregan al CUR el costo de cada tarea o pod según la CPU y la memoria que usó de la instancia. En EKS también reparte GPU, Trainium e Inferentia, y crea etiquetas como aws:eks:namespace. Así cobras por namespace o servicio, no por nodo.

Showback, chargeback y costo por cliente

Showback es mostrarle a cada equipo lo que gasta, sin cobrarle. Chargeback es cargarlo a su presupuesto. Empieza por showback: cuando los números se vuelven confiables y los equipos los aceptan, pasa a chargeback. Cobrar con datos mal etiquetados genera peleas, no ahorro.

En un SaaS, la unidad es el cliente. En silo, etiqueta cada recurso con el inquilino; en pool, mide el consumo de cada inquilino y reparte el costo compartido con esa proporción. Los detalles están en SaaS multiinquilino.

AWS Billing Conductor sirve cuando necesitas una segunda versión de la factura: crea grupos de facturación con precios propios (márgenes, descuentos, cargos o créditos) y muestra a esas cuentas un costo pro forma. Lo usan revendedores de AWS y empresas que cobran entre filiales. No cambia la factura real de AWS.

AWS Cost Anomaly Detection puede vigilar por servicio, por cuenta, por categoría de costos o por etiqueta. Un monitor por CostCenter avisa al dueño correcto cuando su gasto se dispara, en vez de mandar todas las alertas a finanzas.

Requester Pays: que pague quien descarga

Por defecto, el dueño de un bucket paga el almacenamiento, las solicitudes y la transferencia de salida. Con Requester Pays, quien hace la solicitud paga la solicitud y la descarga; el dueño sigue pagando el almacenamiento. Encaja para datasets grandes que compartes con otras empresas o investigadores: datos de clima, mapas, genomas.

# El dueño activa Requester Pays en el bucket
aws s3api put-bucket-request-payment --bucket datos-clima-abiertos \
  --request-payment-configuration Payer=Requester

# Quien descarga acepta el cobro de forma explícita
aws s3 cp s3://datos-clima-abiertos/2026/11/lecturas.parquet . \
  --request-payer requester
  • Quien descarga debe aceptar el cobro: el encabezado x-amz-request-payer en la API o --request-payer en la CLI. Sin eso, las solicitudes de otras cuentas fallan con un error de acceso denegado.
  • No admite acceso anónimo: toda solicitud debe estar autenticada para saber a quién cobrar.
  • Si el solicitante asume un rol, paga la cuenta dueña de ese rol. Un rol de tu propia cuenta te devuelve la factura.

Desplegar el gobierno de costos, paso a paso

  1. 1

    Estructura de cuentas

    Una cuenta por carga de trabajo y entorno, agrupadas en unidades organizativas. Es la base que no depende de etiquetas.
  2. 2

    Diccionario de etiquetas

    Acuerda con finanzas las claves obligatorias y sus valores. Publícalo como política de etiquetas en modo reporte.
  3. 3

    Etiquetar en el código

    Agrega las etiquetas a los módulos de IaC y activa el hook de CloudFormation o la validación de Terraform en modo aviso.
  4. 4

    Activar y medir

    Activa las etiquetas de asignación de costos, crea las categorías de costos y publica un tablero de showback por equipo.
  5. 5

    Endurecer

    Cuando la cobertura sea alta, pasa a bloqueo: SCP con aws:RequestTag, enforced_for y hooks en modo fallo. Config encuentra lo que se escapa.
  6. 6

    Cobrar y vigilar

    Pasa a chargeback con reglas de cargo dividido para lo compartido, presupuestos por categoría y monitores de anomalías por centro de costos.

Quiz

Pon a prueba lo que aprendiste

0 de 5 correctas · 5 sin responder

  1. 1.Una organización quiere que ninguna cuenta pueda lanzar instancias EC2 sin la etiqueta CostCenter, ni desde la consola ni desde la API. ¿Qué aplica?

  2. 2.Finanzas quiere ver el gasto por unidad de negocio, donde cada unidad combina varias cuentas y algunas etiquetas, y repartir el costo del equipo de plataforma según el gasto de cada unidad. ¿Qué usas?

  3. 3.Varios equipos comparten un clúster de EKS sobre las mismas instancias EC2. ¿Cómo asignas el costo de cómputo a cada equipo en el CUR?

  4. 4.Un instituto publica 50 TB de datos satelitales en S3 y no quiere pagar las descargas de miles de usuarios externos. ¿Qué configura?

  5. 5.Una empresa que revende AWS a sus clientes necesita mostrarles su costo con un margen propio, sin alterar la factura que recibe de AWS. ¿Qué servicio usa?