Cloud Cost Agent (AWS + GCP + Azure)
Skill de agente unificado para optimización nativa de costos en la nube en los 3 principales proveedores.
Requisitos: AWS CLI v2, gcloud y/o Azure CLI configurados con acceso de lectura a servicios de facturación/recomendación/advisor. Varias fuentes requieren una activación única: AWS Compute Optimizer y Cost Optimization Hub (registro), GCP Recommender (API habilitada, ~24–48h de datos). Se usa jq en algunos filtros de GCP.
Regla fundamental: Usar siempre la CLI oficial del proveedor y sus motores de recomendación. Sin herramientas de terceros.
Seguridad y Mejores Prácticas (Todos los Proveedores)
- Solo lectura primero. Nunca ejecutes un comando mutante (
aws ec2 terminate-instances/stop-instances,gcloud compute instances delete,az vm delete/deallocate, cualquierpurchase/create/modify) sin citar el comando exacto al usuario y obtener su aprobación explícita. - Usa siempre la autenticación del proveedor (
--profile,gcloud --project,az account set). - Usa
--query/--format json/-o jsonpara una salida limpia. - Maneja la paginación. Estas API paginan los resultados. Agrega cada página antes de reportar totales — sigue
NextToken/nextPageToken, o usa--no-paginate/--max-items(AWS) y--page-size/--limit(gcloud) deliberadamente. Una lectura de una sola página da totales incorrectos. - Cita/escapa todos los valores derivados de la nube. Los nombres de recursos, etiquetas e IDs de la salida de la API pueden contener metacaracteres de shell. Nunca los interpoles sin citar en otro comando shell.
- Ten en cuenta el costo de la API y los bucles.
aws ce(Cost Explorer) cobra ~$0.01 por solicitud. No hagas bucles de llamadas a Cost Explorer; almacena en caché los resultados en la sesión y limita a un puñado de llamadas por auditoría. - Prioriza: mayor ahorro estimado → menor esfuerzo.
- Prefiere victorias rápidas (eliminación de inactivos, ajuste de tamaño a uno más pequeño, habilitar uso comprometido donde sea claro).
Helper de fecha portátil
BSD/macOS y GNU/Linux date difieren. Calcula la ventana una vez, de forma portátil, y luego reutiliza $START/$END:
START=$(date -u -d '30 days ago' +%Y-%m-%d 2>/dev/null || date -u -v-30d +%Y-%m-%d)
END=$(date -u +%Y-%m-%d)
(O simplemente haz que el agente inserte fechas literales YYYY-MM-DD).
Cómo Usar
Indica al agente el/los proveedor(es) y el objetivo. Ejemplos:
auditar AWS últimos 30 díasencontrar victorias rápidas en GCP y Azurerecomendaciones de ajuste de tamaño para todas las nubes
1. Verificación Previa y Autenticación
AWS
aws sts get-caller-identity
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity MONTHLY --metrics "UnblendedCost"
Registro único (requerido para las secciones 2 y 4):
aws compute-optimizer get-enrollment-status
aws compute-optimizer update-enrollment-status --status Active # opt in
aws cost-optimization-hub list-enrollment-statuses --region us-east-1
aws cost-optimization-hub update-enrollment-status --status Active --region us-east-1
GCP
gcloud auth list
gcloud config set project TU_PROYECTO
gcloud billing accounts list
Azure
az account show
az account set --subscription "ID_SUSCRIPCIÓN"
2. Recomendaciones Centralizadas / de Alto Impacto
AWS — Cost Optimization Hub (mejor agregador)
COH es un servicio global accesible solo en us-east-1 y requiere registro (ver Verificación Previa).
aws cost-optimization-hub list-recommendations \
--region us-east-1 \
--filter '{"implementationEfforts":["VeryLow","Low"]}' \
--query 'items[?estimatedMonthlySavings > `10`] | sort_by(@, &estimatedMonthlySavings) | reverse(@)' \
--output json
implementationEfforts válidos: VeryLow | Low | Medium | High | VeryHigh.
GCP — Recommender (fuente principal)
--location es obligatorio. Los recomendadores de VM/inactivos son zonales (ej. us-central1-a); itera por las zonas que uses. El recomendador de compromiso basado en gasto es global y se limita a una cuenta de facturación.
# Ajuste de tamaño de VMs (zonal — repetir por zona)
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=TU_PROYECTO --location=us-central1-a --format=json
# VMs inactivas (zonal — repetir por zona)
gcloud recommender recommendations list \
--recommender=google.compute.instance.IdleResourceRecommender \
--project=TU_PROYECTO --location=us-central1-a \
--format="table(description, primaryImpact.costProjection.cost.units, stateInfo.state)"
# Descuentos por Uso Comprometido (global, ámbito de cuenta de facturación)
gcloud recommender recommendations list \
--recommender=google.cloudbilling.commitment.SpendBasedCommitmentRecommender \
--billing-account=ID_CUENTA_FACTURACION --location=global --format=json
Otros recomendadores de costos: google.compute.disk.IdleResourceRecommender (discos inactivos), google.compute.address.IdleResourceRecommender (IPs inactivas), google.compute.image.IdleResourceRecommender (imágenes inactivas), google.compute.commitment.UsageCommitmentRecommender (CUD basado en recursos).
Azure — Categoría de Costo de Advisor
az advisor recommendation list \
--category Cost \
--query "[].{Resource: shortDescription.problem, Impact: impact, AnnualSavings: extendedProperties.annualSavingsAmount, Currency: extendedProperties.savingsCurrency}" \
-o table
# Solo alto impacto
az advisor recommendation list --category Cost \
--query "[?impact=='High'].{Id:id, Resource:resourceMetadata.resourceId, Savings:extendedProperties.annualSavingsAmount}" -o json
Los campos extendedProperties varían según el tipo de recomendación — maneja valores nulos.
3. Desglose de Costos y Uso
AWS (recuerda el costo de ~$0.01/llamada — no hagas bucles):
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity DAILY --metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE
GCP — el costo/uso detallado proviene de la exportación de BigQuery de facturación (no hay un comando gcloud para filas de costos granulares). Habilita Facturación → exportación a BigQuery, luego consulta gcp_billing_export_resource_v1_<ID_CUENTA_FACTURACION>.
Nota: a partir del 2026-01-21 el esquema de exportación cambió — los descuentos CUD se movieron del array
creditsa un nuevo campoconsumption_model, y se añadieronprice.list_price/price.effective_price_default. Actualiza cualquier lógica de CUD/crédito en consecuencia.
Azure — prefiere las exportaciones de Cost Management (o la API de Detalles de Costo) para datos detallados; az consumption está en la ruta de desaprobación de Microsoft (mantén solo como respaldo para una vista rápida):
# Primario: programar/ejecutar una exportación a almacenamiento (una sola vez solo necesita los 5 parámetros obligatorios)
az costmanagement export create \
--name AdhocExport --type Usage \
--scope "/subscriptions/ID_SUSCRIPCIÓN" \
--storage-account-id "/subscriptions/.../storageAccounts/CUENTA" \
--storage-container exports --timeframe MonthToDate
# Respaldo de vista rápida (API obsoleta):
az consumption usage list --start-date $START --end-date $END \
--query "[].{Resource:instanceName, Service:consumedService, Cost:pretaxCost}" -o table
Para agregación ad-hoc sin almacenamiento, llama a la API REST de Query de Cost Management a través de az rest (no hay un subcomando az costmanagement query).
4. Recomendaciones de Ajuste de Tamaño y Cómputo
AWS — Compute Optimizer (requiere registro; ver Verificación Previa). Ajuste de tamaño profundo + detección de inactivos:
aws compute-optimizer get-ec2-instance-recommendations
aws compute-optimizer get-auto-scaling-group-recommendations
aws compute-optimizer get-ebs-volume-recommendations
aws compute-optimizer get-lambda-function-recommendations
aws compute-optimizer get-rds-database-recommendations
aws compute-optimizer get-idle-recommendations
Cost Explorer también ofrece ajuste de tamaño de EC2 (--service es obligatorio, solo "AmazonEC2" es válido):
aws ce get-rightsizing-recommendation --service "AmazonEC2"
GCP — recomendador de tipo de máquina (nota tonumber: GCP devuelve cost.units como una cadena):
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=TU_PROYECTO --location=us-central1-a --format=json \
| jq '.[] | select((.primaryImpact.costProjection.cost.units|tonumber) < 0)'
Azure — las recomendaciones de Costo de Advisor ya incluyen ajuste de tamaño de VM/recursos subutilizados (sección 2).
5. Compromisos y Descuentos
AWS — recomendación de compra de Savings Plans. Los cuatro parámetros son obligatorios:
aws ce get-savings-plans-purchase-recommendation \
--savings-plans-type COMPUTE_SP \
--term-in-years ONE_YEAR \
--payment-option NO_UPFRONT \
--lookback-period-in-days THIRTY_DAYS
(savings-plans-type: COMPUTE_SP|EC2_INSTANCE_SP|SAGEMAKER_SP; term-in-years: ONE_YEAR|THREE_YEARS; payment-option: NO_UPFRONT|PARTIAL_UPFRONT|ALL_UPFRONT; lookback-period-in-days: SEVEN_DAYS|THIRTY_DAYS|SIXTY_DAYS.)
GCP — Descuentos por Uso Comprometido a través del recomendador de compromiso basado en gasto (sección 2).
Azure — las recomendaciones de reserva/plan de ahorro surgen a través de Advisor (por suscripción); para el ámbito de cuenta de facturación, usa la API REST de Recomendaciones de Reserva de Consumption a través de az rest:
az advisor recommendation list --category Cost \
--query "[?contains(shortDescription.problem, 'reserved') || contains(shortDescription.problem, 'reservation')]"
6. Plantilla de Priorización (para cualquier proveedor)
Al resumir:
- Ahorro total estimado mensual / anual.
- Grupo de victorias rápidas (esfuerzo MuyBajo/Bajo o equivalente).
- Top 5-8 elementos: Recurso, Estado actual, Acción recomendada, Ahorro en $, Esfuerzo/riesgo.
- Siguiente comando concreto para el elemento principal.
Proveedor: GCP
Ahorro potencial mensual total: $2,340
Victorias rápidas:
- Eliminar VM inactiva ... : $180/mes (MuyBajo)
- Ajustar tamaño de n1-standard-8 → n2-standard-4 : $420/mes
Siguiente comando:
gcloud recommender recommendations list --recommender=google.compute.instance.IdleResourceRecommender --project=... --location=us-central1-a
Referencia Rápida por Proveedor
AWS
- Cost Optimization Hub (
us-east-1, registrado) para la vista agregada amplia. - Compute Optimizer (registrado) para ajuste de tamaño profundo + inactivos.
- Cost Explorer (
aws ce) para desgloses de gasto, ajuste de tamaño, Savings Plans — ten en cuenta el costo por llamada.
GCP
Pasa siempre --location. Recomendadores clave:
- MachineTypeRecommender (ajuste de tamaño, zonal)
- IdleResourceRecommender para VMs / discos / IPs / imágenes (zonal/regional)
- SpendBasedCommitmentRecommender (CUDs, global, cuenta de facturación)
Azure
- Advisor es la fuente principal para recomendaciones de Costo.
- Exportaciones de Cost Management (o API de Detalles de Costo) para uso sin procesar;
az consumptionsolo como respaldo obsoleto.
Flujo de Auditoría Completo (Recomendado)
- Autenticar; confirmar registros (Compute Optimizer, COH).
- Obtener resumen de costos de alto nivel para la ventana.
- Obtener recomendaciones (Hub / Recommender / Advisor), agregando todas las páginas.
- Filtrar por ahorros > umbral y bajo esfuerzo.
- Verificar con uso sin procesar si es necesario.
- Producir lista priorizada + 3 acciones concretas siguientes (solo lectura; marcar cualquier mutación para aprobación).
- (Opcional) Repetir para otros proveedores.
Referencias
AWS
- Cost Explorer: https://docs.aws.amazon.com/cli/latest/reference/ce/
- Compute Optimizer: https://docs.aws.amazon.com/cli/latest/reference/compute-optimizer/
- Cost Optimization Hub: https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-hub.html
- Migración de acciones IAM de facturación (retiro de aws-portal): https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/migrate-granularaccess-iam-mapping-reference.html
GCP
- Lista de recomendadores: https://cloud.google.com/recommender/docs/recommenders
recommendations list: https://cloud.google.com/sdk/gcloud/reference/recommender/recommendations/list- Exportación de facturación a BigQuery: https://cloud.google.com/billing/docs/how-to/export-data-bigquery
Azure
- Recomendaciones de Advisor: https://learn.microsoft.com/cli/azure/advisor/recommendation
- Exportaciones de Cost Management: https://learn.microsoft.com/cli/azure/costmanagement/export
- Migración de API de Consumption: https://learn.microsoft.com/azure/cost-management-billing/automate/migrate-consumption-usage-details-api
Ejecútalo con un proveedor específico o en los tres. Mantente nativo. Mantente efectivo.