Cloud Cost Agent (AWS + GCP + Azure)
Skill de agente unificado para otimização de custos nativa em nuvem nas três principais provedoras.
Requisitos: AWS CLI v2, gcloud e/ou Azure CLI configurados com acesso de leitura aos serviços de faturamento/recomendador/advisor. Várias fontes exigem ativação única: AWS Compute Optimizer e Cost Optimization Hub (inscrição), GCP Recommender (API ativada, ~24–48h de dados). jq é usado em alguns filtros do GCP.
Regra central: Use sempre a CLI oficial e os mecanismos de recomendação da provedora. Nenhuma ferramenta de terceiros.
Segurança e Melhores Práticas (Todas as Provedoras)
- Somente leitura primeiro. Nunca execute um comando mutante (
aws ec2 terminate-instances/stop-instances,gcloud compute instances delete,az vm delete/deallocate, qualquerpurchase/create/modify) sem citar o comando exato ao usuário e obter aprovação explícita. - Sempre use a autenticação da provedora (
--profile,gcloud --project,az account set). - Use
--query/--format json/-o jsonpara saída limpa. - Lide com paginação. Essas APIs paginam resultados. Agregue cada página antes de relatar totais — siga
NextToken/nextPageToken, ou use--no-paginate/--max-items(AWS) e--page-size/--limit(gcloud) deliberadamente. Uma leitura de página única fornece totais errados. - Coloque entre aspas/escape todos os valores derivados da nuvem. Nomes de recursos, tags e IDs da saída da API podem conter metacaracteres de shell. Nunca os interpole sem aspas em outro comando shell.
- Cuidado com custo de API e loops.
aws ce(Cost Explorer) cobra ~$0,01 por requisição. Não faça loop de chamadas do Cost Explorer; armazene resultados em cache na sessão e limite a algumas chamadas por auditoria. - Priorize: maior economia estimada → menor esforço.
- Prefira vitórias rápidas (exclusão de ociosos, redimensionamento para menores, ativar uso comprometido quando claro).
Auxiliar de data portátil
As date do BSD/macOS e GNU/Linux diferem. Calcule a janela uma vez, de forma portátil, e reutilize $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)
(Ou apenas peça ao agente para inserir datas literais AAAA-MM-DD.)
Como Usar
Diga ao agente a(s) provedora(s) e o objetivo. Exemplos:
auditar AWS últimos 30 diasencontrar vitórias rápidas no GCP e Azurerecomendações de redimensionamento para todas as nuvens
1. Pré-voo e Autenticação
AWS
aws sts get-caller-identity
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity MONTHLY --metrics "UnblendedCost"
Inscrição única (necessária para as seções 2 e 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 SEU_PROJETO
gcloud billing accounts list
Azure
az account show
az account set --subscription "SUB_ID"
2. Recomendações Centralizadas / de Alto Impacto
AWS — Cost Optimization Hub (melhor agregador)
O COH é um serviço global acessível apenas em us-east-1 e requer inscrição (veja Pré-voo).
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 (fonte principal)
--location é obrigatório. Os recomendadores de VM/ociosos são zonais (ex.: us-central1-a); itere pelas zonas que você usa. O recomendador de compromisso baseado em gastos é global e com escopo em uma conta de faturamento.
# Redimensionamento de VMs (zonal — repita por zona)
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=SEU_PROJETO --location=us-central1-a --format=json
# VMs ociosas (zonal — repita por zona)
gcloud recommender recommendations list \
--recommender=google.compute.instance.IdleResourceRecommender \
--project=SEU_PROJETO --location=us-central1-a \
--format="table(description, primaryImpact.costProjection.cost.units, stateInfo.state)"
# Descontos por Uso Comprometido (global, escopo da conta de faturamento)
gcloud recommender recommendations list \
--recommender=google.cloudbilling.commitment.SpendBasedCommitmentRecommender \
--billing-account=ID_DA_CONTA_DE_FATURAMENTO --location=global --format=json
Outros recomendadores de custo: google.compute.disk.IdleResourceRecommender (discos ociosos), google.compute.address.IdleResourceRecommender (IPs ociosos), google.compute.image.IdleResourceRecommender (imagens ociosas), google.compute.commitment.UsageCommitmentRecommender (CUD baseado em recurso).
Azure — Categoria de Custo do Advisor
az advisor recommendation list \
--category Cost \
--query "[].{Resource: shortDescription.problem, Impact: impact, AnnualSavings: extendedProperties.annualSavingsAmount, Currency: extendedProperties.savingsCurrency}" \
-o table
# Apenas alto impacto
az advisor recommendation list --category Cost \
--query "[?impact=='High'].{Id:id, Resource:resourceMetadata.resourceId, Savings:extendedProperties.annualSavingsAmount}" -o json
Os campos extendedProperties variam por tipo de recomendação — lide com nulos.
3. Detalhamento de Custos e Uso
AWS (lembre-se do custo de ~$0,01/chamada — não faça loop):
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity DAILY --metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE
GCP — dados detalhados de custo/uso vêm da exportação do BigQuery de faturamento (não há comando gcloud para linhas de custo granulares). Ative a exportação de Faturamento → BigQuery e consulte gcp_billing_export_resource_v1_<ID_DA_CONTA_DE_FATURAMENTO>.
Nota: a partir de 2026-01-21 o esquema de exportação mudou — os descontos CUD foram movidos do array
creditspara um novo campoconsumption_model, eprice.list_price/price.effective_price_defaultforam adicionados. Atualize qualquer lógica de CUD/crédito de acordo.
Azure — prefira exportações de Gerenciamento de Custos (ou a API Cost Details) para dados detalhados; az consumption está no caminho de descontinuação da Microsoft (mantenha apenas como fallback de consulta rápida):
# Primário: agendar/executar uma exportação para armazenamento (uma única execução precisa apenas dos 5 parâmetros obrigatórios)
az costmanagement export create \
--name AdhocExport --type Usage \
--scope "/subscriptions/SUB_ID" \
--storage-account-id "/subscriptions/.../storageAccounts/CONTA" \
--storage-container exports --timeframe MonthToDate
# Fallback de consulta rápida (API descontinuada):
az consumption usage list --start-date $START --end-date $END \
--query "[].{Resource:instanceName, Service:consumedService, Cost:pretaxCost}" -o table
Para agregação ad-hoc sem armazenamento, chame a API REST Query do Gerenciamento de Custos via az rest (não há subcomando az costmanagement query).
4. Redimensionamento e Recomendações de Computação
AWS — Compute Optimizer (requer inscrição; veja Pré-voo). Redimensionamento profundo + detecção de ociosidade:
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
O Cost Explorer também oferece redimensionamento EC2 (--service é obrigatório, apenas "AmazonEC2" é válido):
aws ce get-rightsizing-recommendation --service "AmazonEC2"
GCP — recomendador de tipo de máquina (observe tonumber: o GCP retorna cost.units como uma string):
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=SEU_PROJETO --location=us-central1-a --format=json \
| jq '.[] | select((.primaryImpact.costProjection.cost.units|tonumber) < 0)'
Azure — as recomendações de Custo do Advisor já incluem redimensionamento de VMs / recursos subutilizados (seção 2).
5. Compromissos e Descontos
AWS — recomendação de compra de Savings Plans. Todos os quatro parâmetros são obrigatórios:
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 — Descontos por Uso Comprometido via o recomendador baseado em gastos (seção 2).
Azure — recomendações de reserva/savings-plan surgem pelo Advisor (por assinatura); para escopo de conta de faturamento, use a API REST de Recomendações de Reserva do Consumption via az rest:
az advisor recommendation list --category Cost \
--query "[?contains(shortDescription.problem, 'reserved') || contains(shortDescription.problem, 'reservation')]"
6. Modelo de Priorização (para qualquer provedora)
Ao resumir:
- Total de economia mensal/anual estimada.
- Cesta de vitórias rápidas (esforço VeryLow/Low ou equivalente).
- Top 5-8 itens: Recurso, Estado atual, Ação recomendada, Economia em $, Esforço/risco.
- Próximo comando concreto para o item principal.
Provedora: GCP
Economia mensal potencial total: $2.340
Vitórias rápidas:
- Excluir VM ociosa ... : $180/mês (VeryLow)
- Redimensionar n1-standard-8 → n2-standard-4 : $420/mês
Próximo comando:
gcloud recommender recommendations list --recommender=google.compute.instance.IdleResourceRecommender --project=... --location=us-central1-a
Referência Rápida por Provedora
AWS
- Cost Optimization Hub (
us-east-1, inscrito) para a visão agregada ampla. - Compute Optimizer (inscrito) para redimensionamento profundo + ociosidade.
- Cost Explorer (
aws ce) para detalhamento de gastos, redimensionamento, Savings Plans — cuidado com o custo por chamada.
GCP
Sempre passe --location. Recomendadores principais:
- MachineTypeRecommender (redimensionamento, zonal)
- IdleResourceRecommender para VMs / discos / IPs / imagens (zonal/regional)
- SpendBasedCommitmentRecommender (CUDs, global, conta de faturamento)
Azure
- Advisor é a fonte principal para recomendações de Custo.
- Exportações do Gerenciamento de Custos (ou API Cost Details) para uso bruto;
az consumptionapenas como fallback descontinuado.
Fluxo de Auditoria Completo (Recomendado)
- Autenticar; confirmar inscrições (Compute Optimizer, COH).
- Obter resumo de custo de alto nível para a janela.
- Obter recomendações (Hub / Recommender / Advisor), agregando todas as páginas.
- Filtrar por economia > limite e baixo esforço.
- Cruzar com uso bruto se necessário.
- Produzir lista priorizada + 3 próximas ações concretas (somente leitura; sinalizar qualquer mutação para aprovação).
- (Opcional) Repetir para outras provedoras.
Referências
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
- Migração de ação IAM de faturamento (aposentadoria do 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- Exportação BigQuery de faturamento: https://cloud.google.com/billing/docs/how-to/export-data-bigquery
Azure
- Recomendações do Advisor: https://learn.microsoft.com/cli/azure/advisor/recommendation
- Exportações do Gerenciamento de Custos: https://learn.microsoft.com/cli/azure/costmanagement/export
- Migração da API Consumption: https://learn.microsoft.com/azure/cost-management-billing/automate/migrate-consumption-usage-details-api
Execute-o com uma provedora específica ou em todas as três. Mantenha-se nativo. Mantenha-se eficaz.