Prefere não configurar nada? Use as predefinições de gastos
Se você só quer sua fatura da AWS na Tela de Início, não precisa de um painel. Ative as métricas de faturamento (etapa 1) e depois adicione as predefinições de gastos do CloudPeek com Criar Widget › Predefinição. Juntas, elas mostram tudo o que o painel abaixo mostra:
| Widget de painel | Predefinição | Diferença |
|---|---|---|
| Top 5 services by spend | Gastos por serviço | Todos os serviços, do maior para o menor, com os que não cabem somados em Outros. O total é a soma dos serviços, e não a fatura inteira. |
| Gastos do mês | Gastos do mês | Igual. |
| Last 7 days' spend | Gastos diários por conta | Igual, com as contas empilhadas na coluna de cada dia em uma conta de gerenciamento do AWS Organizations, e também pode mostrar 2 semanas, 30 dias ou o mês até agora. |
| Top 5 services' share of spend | Divisão dos gastos | Todos os serviços, não só cinco. |
As predefinições também incluem Previsão de fim de mês, Gastos e previsão, Gastos diários por serviço, Tabela de gastos diários e Tendência de gastos: consulte Predefinições. Crie o painel se você quiser um top 5 fixo, a fatura inteira como total, os mesmos widgets no console do CloudWatch ou um painel mantido no CloudFormation ou no Terraform.
O que você vai criar
Você vai criar um painel do CloudWatch chamado CloudPeek-Spend com quatro widgets. O primeiro é um gráfico de barras dos cinco serviços com que você mais gastou até agora neste mês, encontrados automaticamente, com o total da sua conta. O segundo é esse total do mês até agora, com um minigráfico da última semana. O terceiro mostra quanto você gastou em cada um dos últimos 7 dias, uma coluna por dia, e o quarto é um gráfico de pizza de como seus cinco principais serviços dividem os gastos. No CloudPeek, eles ficam assim:
Leva cerca de 15 minutos no console da AWS, ou uma implantação com o CloudFormation ou o Terraform. Escolha sua ferramenta nas abas de cada etapa.
Antes de começar
- Uma conta da AWS e um login que possa alterar as preferências de faturamento e criar painéis do CloudWatch e usuários e políticas do IAM, como um administrador. Se suas contas estiverem no AWS Organizations, use a conta de gerenciamento para ver os gastos de toda a organização.
- O CloudPeek no seu iPhone, iPad ou celular Android.
Quanto custa. As métricas de faturamento são gratuitas. O nível gratuito do CloudWatch inclui três painéis; além disso, cada painel custa US$ 3 por mês. As atualizações do CloudPeek chamam GetMetricData, que a AWS cobra a US$ 0,01 a cada 1.000 métricas. A AWS atualiza as métricas de faturamento só algumas vezes por dia, então esses widgets são atualizados no máximo a cada 3 horas: com os quatro fixados, são cerca de 15 métricas por atualização, cerca de US$ 0,04 por mês. Em Ajustes (Configurações, no Android), você vê essa estimativa para os seus widgets, em Atualizar. Consulte Preços do CloudWatch.
1. Ative as métricas de faturamento
A AWS só envia suas cobranças estimadas ao CloudWatch depois que você ativa essa opção. Isso é feito uma vez por conta, no console: o CloudFormation, o Terraform e a AWS CLI não conseguem alterar essa configuração.
- Faça login no console da AWS e abra Billing and Cost Management › Preferências de faturamento.
- Em Preferências de alerta, escolha Editar.
- Selecione Receber alertas de faturamento do CloudWatch e salve a alteração.
As cobranças estimadas são publicadas na região Leste dos EUA (Norte da Virgínia), us-east-1, várias vezes por dia. Elas são contadas desde o início do mês, então voltam a zero todo mês. Os primeiros dados podem levar algumas horas para aparecer. Se você não fez login como usuário raiz, a conta também precisa permitir o acesso do IAM às informações de faturamento (em Conta › Acesso de usuários e perfis do IAM às informações de faturamento).
Até os primeiros dados chegarem, o painel que você vai criar em seguida mostra Nenhum dado disponível, e os widgets de gastos do CloudPeek mostram “Ative os alertas de faturamento do CloudWatch no console do Billing. Os gastos aparecem em até um dia.” (“Ative os alertas de faturamento do CloudWatch.” em um widget pequeno). Para verificar se as métricas de faturamento já começaram a chegar, abra o CloudWatch em us-east-1 e escolha Métricas › Todas as métricas: um namespace Billing aparece quando elas chegam. O Metrics Explorer não lista métricas de faturamento, então procure em Todas as métricas.
No AWS Organizations, as métricas de faturamento ficam só na conta de gerenciamento, que tem as cobranças de todas as contas, separadas por conta (Gastos por conta). As outras contas não têm nenhuma, então ative os alertas de faturamento na conta de gerenciamento e adicione-a ao CloudPeek para ter widgets de gastos. Em uma conta em que você fez login com o IAM Identity Center e que não é a conta de gerenciamento, os widgets de gastos do CloudPeek mostram “Os gastos desta conta ficam na conta de gerenciamento da sua organização.” (“Os gastos ficam na sua conta de gerenciamento.” em um widget pequeno). O CloudPeek reconhece a conta de gerenciamento por ela conseguir listar as contas da organização (organizations:ListAccounts, na política do CloudPeek), então dê essa permissão ao login da conta de gerenciamento.
2. Crie o painel
- Abra o console do CloudWatch em us-east-1 e escolha Criar painel.
- Dê a ele o nome
CloudPeek-Spende escolha Criar painel. Se a janela Adicionar widget abrir, feche-a. - Escolha Ações › Visualizar/editar origem, substitua a origem pelo JSON do painel e escolha Atualizar.
- Escolha Salvar.
Baixe spend-by-service.json (ele está completo mais abaixo) e execute:
aws cloudwatch put-dashboard \
--region us-east-1 \
--dashboard-name CloudPeek-Spend \
--dashboard-body file://spend-by-service.json
Um único modelo cria o painel e também a política do CloudPeek e o usuário do IAM da etapa 3. Este é o recurso do painel:
Dashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: !Ref DashboardName
DashboardBody: !Sub |
{
"start": "-P7D",
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 12,
"height": 8,
"properties": {
"title": "Top ${TopServices} services by spend",
"view": "bar",
"region": "us-east-1",
"start": "-P1D",
"stat": "Maximum",
"period": 21600,
"metrics": [
[ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ],
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "top" } ]
]
}
},
{
"type": "metric",
"x": 12,
"y": 0,
"width": 6,
"height": 8,
"properties": {
"title": "Month-to-date spend",
"view": "singleValue",
"region": "us-east-1",
"stat": "Maximum",
"period": 21600,
"sparkline": true,
"metrics": [
[ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ]
]
}
},
{
"type": "metric",
"x": 18,
"y": 0,
"width": 6,
"height": 8,
"properties": {
"title": "Last 7 days' spend",
"view": "timeSeries",
"region": "us-east-1",
"start": "-P7D",
"stat": "Maximum",
"period": 86400,
"yAxis": { "left": { "min": 0 } },
"metrics": [
[ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
[ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "id": "m1", "visible": false } ]
]
}
},
{
"type": "metric",
"x": 0,
"y": 8,
"width": 12,
"height": 8,
"properties": {
"title": "Top ${TopServices} services' share of spend",
"view": "pie",
"region": "us-east-1",
"start": "-P1D",
"stat": "Maximum",
"period": 21600,
"metrics": [
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "share" } ]
]
}
}
]
}
O corpo é o JSON do painel mais abaixo, com ${TopServices} e ${Currency} preenchidos a partir dos parâmetros da pilha. ${!PROP(…)} impede que o CloudFormation trate o rótulo dinâmico como uma de suas próprias variáveis.
aws cloudformation deploy \
--region us-east-1 \
--stack-name CloudPeek \
--template-file cloudpeek-setup.yaml \
--capabilities CAPABILITY_NAMED_IAM
Ou, no console do CloudFormation em us-east-1, escolha Fazer upload de um arquivo de modelo, dê à pilha o nome CloudPeek, confira os parâmetros e selecione Eu reconheço que o AWS CloudFormation pode criar recursos do IAM com nomes personalizados antes de enviar. Quando a pilha chegar a CREATE_COMPLETE, a aba Saídas dela terá um link para o painel.
| Parâmetro | Padrão | Para que serve |
|---|---|---|
DashboardName | CloudPeek-Spend | O nome do painel. |
TopServices | 5 | Quantos dos seus maiores serviços mostrar no gráfico, de 1 a 20. |
Currency | USD | A moeda da sua fatura. |
PolicyName | CloudPeek | O nome da política. |
CreateUser | true | Defina como false se você for fazer login com o IAM Identity Center. |
UserName | cloudpeek | O nome do usuário do IAM. |
Para alterá-los, adicione --parameter-overrides, por exemplo, --parameter-overrides TopServices=10 CreateUser=false.
Uma única configuração cria o painel e também a política do CloudPeek e o usuário do IAM da etapa 3. Este é o recurso do painel:
resource "aws_cloudwatch_dashboard" "spend" {
dashboard_name = var.dashboard_name
dashboard_body = jsonencode({
start = "-P7D"
widgets = [
{
type = "metric"
x = 0
y = 0
width = 12
height = 8
properties = {
title = "Top ${var.top_services} services by spend"
view = "bar"
region = "us-east-1"
start = "-P1D"
stat = "Maximum"
period = 21600
metrics = [
["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
[{
expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
label = "$${PROP('Dim.ServiceName')}"
id = "top"
}],
]
}
},
{
type = "metric"
x = 12
y = 0
width = 6
height = 8
properties = {
title = "Month-to-date spend"
view = "singleValue"
region = "us-east-1"
stat = "Maximum"
period = 21600
sparkline = true
metrics = [
["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
]
}
},
{
type = "metric"
x = 18
y = 0
width = 6
height = 8
properties = {
title = "Last 7 days' spend"
view = "timeSeries"
region = "us-east-1"
start = "-P7D"
stat = "Maximum"
period = 86400
yAxis = { left = { min = 0 } }
metrics = [
[{ expression = "IF(DIFF(m1) < 0, m1, DIFF(m1))", label = "Spend", id = "daily" }],
["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { id = "m1", visible = false }],
]
}
},
{
type = "metric"
x = 0
y = 8
width = 12
height = 8
properties = {
title = "Top ${var.top_services} services' share of spend"
view = "pie"
region = "us-east-1"
start = "-P1D"
stat = "Maximum"
period = 21600
metrics = [
[{
expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
label = "$${PROP('Dim.ServiceName')}"
id = "share"
}],
]
}
},
]
})
}
Ela gera exatamente o JSON do painel mais abaixo com jsonencode. $${PROP(…)} impede que o Terraform trate o rótulo dinâmico como uma interpolação. Salve o arquivo em um diretório vazio e execute:
terraform init
terraform apply
| Variável | Padrão | Para que serve |
|---|---|---|
dashboard_name | CloudPeek-Spend | O nome do painel. |
top_services | 5 | Quantos dos seus maiores serviços mostrar no gráfico, de 1 a 20. |
currency | USD | A moeda da sua fatura. |
policy_name | CloudPeek | O nome da política. |
create_user | true | Defina como false se você for fazer login com o IAM Identity Center. |
user_name | cloudpeek | O nome do usuário do IAM. |
Para alterá-las, passe -var, por exemplo, terraform apply -var top_services=10 -var create_user=false. Para adicionar o painel a uma configuração existente, copie os recursos e deixe de fora os blocos terraform e provider.
3. Crie um login para o CloudPeek
Siga Crie um login para o CloudPeek em Primeiros passos. Essa seção cria a política CloudPeek e um usuário do IAM com uma chave de acesso ou um conjunto de permissões do IAM Identity Center.
Siga Crie um login para o CloudPeek em Primeiros passos, que tem os comandos da AWS CLI para um usuário do IAM ou um conjunto de permissões do IAM Identity Center.
A pilha da etapa 2 já criou a política CloudPeek e, a menos que você tenha definido CreateUser como false, o usuário cloudpeek. Crie a chave de acesso do usuário. A chave secreta é mostrada só uma vez:
aws iam create-access-key --user-name cloudpeek
Para o IAM Identity Center, anexe CloudPeek a um conjunto de permissões como política gerenciada pelo cliente (consulte a Opção B).
A configuração da etapa 2 já criou a política CloudPeek e, a menos que você tenha definido create_user como false, o usuário cloudpeek. Crie a chave de acesso do usuário fora do Terraform, para que a chave secreta fique fora do seu estado. Ela é mostrada só uma vez:
aws iam create-access-key --user-name cloudpeek
Para o IAM Identity Center, anexe CloudPeek a um conjunto de permissões como política gerenciada pelo cliente (consulte a Opção B).
4. Adicione a conta e fixe os widgets
- No CloudPeek, adicione a conta na aba Contas com a chave de acesso ou o IAM Identity Center (consulte Primeiros passos, etapa 2). Qualquer região padrão serve: os widgets de gastos sempre leem
us-east-1. - Na aba Contas, abra a conta, depois o painel CloudPeek-Spend, e toque em Fixar nos widgets que você quiser: Top 5 services by spend, Month-to-date spend, Last 7 days' spend e Top 5 services' share of spend.
- Adicione o CloudPeek à Tela de Início uma vez para cada widget e escolha qual cada um mostra (consulte Escolher qual widget ele mostra). O tamanho médio é ideal para os gráficos de barras e de pizza; o pequeno, para o total do mês até agora e os últimos 7 dias.
Resultado: quando as métricas de faturamento chegarem, o gráfico de barras vai listar seus maiores serviços neste mês, com o total acima deles. Até lá, os widgets mostram Sem dados para este intervalo de tempo.
No iPhone e no iPad, o total também fica bem na Tela Bloqueada, onde os widgets mostram o valor mais recente.
Como o painel funciona
Seja qual for a ferramenta que você usou, este é o painel que você obtém:
{
"start": "-P7D",
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 12,
"height": 8,
"properties": {
"title": "Top 5 services by spend",
"view": "bar",
"region": "us-east-1",
"start": "-P1D",
"stat": "Maximum",
"period": 21600,
"metrics": [
[ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ],
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "top" } ]
]
}
},
{
"type": "metric",
"x": 12,
"y": 0,
"width": 6,
"height": 8,
"properties": {
"title": "Month-to-date spend",
"view": "singleValue",
"region": "us-east-1",
"stat": "Maximum",
"period": 21600,
"sparkline": true,
"metrics": [
[ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ]
]
}
},
{
"type": "metric",
"x": 18,
"y": 0,
"width": 6,
"height": 8,
"properties": {
"title": "Last 7 days' spend",
"view": "timeSeries",
"region": "us-east-1",
"start": "-P7D",
"stat": "Maximum",
"period": 86400,
"yAxis": { "left": { "min": 0 } },
"metrics": [
[ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
[ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "id": "m1", "visible": false } ]
]
}
},
{
"type": "metric",
"x": 0,
"y": 8,
"width": 12,
"height": 8,
"properties": {
"title": "Top 5 services' share of spend",
"view": "pie",
"region": "us-east-1",
"start": "-P1D",
"stat": "Maximum",
"period": 21600,
"metrics": [
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "share" } ]
]
}
}
]
}
- A linha de expressão encontra seus principais serviços para você.
SEARCHencontra as cobranças estimadas de cada serviço, eSORT(…, MAX, DESC, 5)mantém as cinco maiores. Os serviços que você começar a usar aparecem sozinhos. Para mostrar mais ou menos, altere o5no fim das expressões dos gráficos de barras e de pizza (ou o parâmetroTopServices, ou a variáveltop_services). - O rótulo
${PROP('Dim.ServiceName')}dá a cada barra o nome do serviço, comoAmazonEC2ouAWSLambda. O CloudPeek mostra o nome curto (EC2, Lambda), lista os serviços do maior para o menor e soma os que não cabem em Outros. - A linha que tem só a dimensão
Currencysão as cobranças da conta inteira até agora neste mês. O CloudPeek mostra essa linha como o Total do widget, e não como uma barra, então os serviços fora do top 5 continuam contando. No console do CloudWatch, ela aparece como mais uma barra. - As cobranças são contadas desde o início do mês, então os gráficos de barras e de pizza olham só o último dia (
"start": "-P1D"). Assim, a classificação segue as cobranças deste mês, e não as do mês passado. O total do mês até agora usa a semana do painel no minigráfico. - Os últimos 7 dias vêm da mesma cobrança do mês até agora, lida uma vez por dia (
"period": 86400) da linha ocultam1.DIFF(m1)é quanto ela subiu a cada dia e, no dia em que ela volta a zero no início de um mês,IF(… < 0, m1, …)usa a cobrança do novo mês. - O CloudPeek desenha cada um desses dias como uma coluna, a partir da meia-noite no seu fuso horário, com o valor de hoje até agora à direita. O console do CloudWatch não tem um gráfico assim, então desenha os mesmos dias como uma linha.
- Se a sua fatura não estiver em dólares americanos, troque cada
USDnas linhas e expressões pelo código da sua moeda. - O gráfico de pizza usa a mesma expressão do gráfico de barras, sem a linha Total, então as fatias são a parte de cada um dos cinco principais serviços no que eles custam juntos. O CloudPeek coloca essa soma no meio.
- Para incluir todo o resto na pizza como uma fatia Outros, com as cobranças da conta inteira no meio, copie para ela a linha Total do gráfico de barras. O console do CloudWatch passa então a desenhar o Total como mais uma fatia.
Para ver as cobranças de todos os serviços, abra o CloudWatch em us-east-1 e escolha Todas as métricas › Billing › Por serviço.
Para ver os gastos de cada serviço por dia, empilhados em uma coluna por dia, adicione a predefinição Gastos diários por serviço (consulte Predefinições de gastos) ou descreva o que você quer em um widget de IA, por exemplo, “Gastos diários por serviço nos últimos 7 dias, empilhados”. A cobrança de cada serviço também é contada desde o início do mês, então esses widgets calculam quanto cada uma subiu a cada dia, como DIFF(m1) faz para o total.
Para listar os gastos dos últimos 7 dias em uma tabela, uma linha por dia, do mais recente para o mais antigo, adicione a predefinição Tabela de gastos diários ou descreva o que você quer em um widget de IA, por exemplo, “Uma tabela dos gastos dos últimos 7 dias, uma linha por dia”. Em um painel, são as linhas DIFF(m1) acima em um widget com "view": "table" e "table": {"layout": "vertical"}.
Gastos por conta
Se suas contas estiverem no AWS Organizations, as métricas de faturamento da conta de gerenciamento também separam as cobranças por conta, com a dimensão LinkedAccount. Para mostrar no gráfico as cinco contas com mais gastos neste mês, em vez dos serviços com mais gastos, use esta linha de expressão no gráfico de barras ou de pizza no lugar da linha dos serviços:
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,LinkedAccount} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "id": "accounts" } ]
Ou descreva o que você quer em um widget de IA, por exemplo, “Gastos por conta neste mês” ou, para um só serviço, “Gráfico de barras empilhadas dos gastos com SQS de cada conta nos últimos 7 dias”. A predefinição Gastos diários por conta já empilha os gastos de cada conta em uma coluna por dia: consulte Predefinições de gastos.
O CloudWatch só conhece cada conta pelo ID de 12 dígitos. O CloudPeek mostra o nome da conta, obtido da primeira destas fontes que o informe:
- AWS Organizations, que informa o nome de todas as contas da organização. Ele precisa de
organizations:ListAccounts, que está na política do CloudPeek, e só responde à conta de gerenciamento (ou a uma conta de administrador delegado). O CloudPeek o consulta uma vez por dia. - IAM Identity Center, se você fez login com ele: os nomes das contas em que ele permite que você faça login.
- Sua aba Contas: o nome que você deu a uma conta que adicionou.
Uma conta que nenhuma delas nomeia continua aparecendo pelo ID. Se o AWS Organizations recusar, o CloudPeek pergunta de novo depois de seis horas, ou assim que você atualizar o widget.
Remover o que você criou
No console do CloudWatch em us-east-1, abra Painéis, selecione CloudPeek-Spend e escolha Excluir. Para remover também o acesso do CloudPeek, exclua o usuário cloudpeek e a política CloudPeek no console do IAM.
aws cloudwatch delete-dashboards --region us-east-1 --dashboard-names CloudPeek-Spend
O CloudFormation não consegue excluir um usuário que ainda tem uma chave de acesso, nem uma política que algo fora da pilha ainda usa. Primeiro exclua a chave de acesso do usuário e desanexe a política de todos os conjuntos de permissões; depois, exclua a pilha:
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
aws cloudformation delete-stack --region us-east-1 --stack-name CloudPeek
O IAM não exclui um usuário que ainda tem uma chave de acesso, nem uma política que ainda está anexada em outro lugar. Primeiro exclua a chave de acesso do usuário e desanexe a política de todos os conjuntos de permissões; depois, execute o destroy:
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
terraform destroy
Solução de problemas
Os widgets estão vazios, ou o painel mostra “Nenhum dado disponível”
As métricas de faturamento ainda não estão chegando ao CloudWatch, e os widgets do CloudPeek mostram “Ative os alertas de faturamento do CloudWatch no console do Billing. Os gastos aparecem em até um dia.” Verifique se elas estão ativadas (etapa 1) e aguarde algumas horas. Depois, procure o namespace Billing em Todas as métricas em us-east-1 (o Metrics Explorer não lista métricas de faturamento). No AWS Organizations, configure isso na conta de gerenciamento, que vê as cobranças de toda a organização: nas outras contas da organização, os widgets mostram “Os gastos desta conta ficam na conta de gerenciamento da sua organização.”
As contas aparecem como números
O CloudPeek não encontrou os nomes delas. Na conta de gerenciamento, adicione organizations:ListAccounts ao login do CloudPeek, ou implante o modelo atualizado de Primeiros passos, e depois atualize o widget. Consulte Gastos por conta.
Falta um serviço
Ele não está entre os seus cinco maiores neste mês. Para mostrar mais serviços no gráfico, aumente o número no fim da expressão SORT (veja como funciona). As cobranças dele já estão incluídas no Total.
O Total é maior que a soma das barras
Isso é esperado. O Total é a sua fatura inteira até agora neste mês, incluindo os serviços fora do seu top 5.
Outro problema
Consulte Solução de problemas ou envie um e-mail para support@cloudpeek.app. Nunca nos envie sua chave de acesso secreta.