Uma conta da AWS com uma só pessoa controla-se com uma olhadela à fatura. Com quatro ou cinco pessoas a criar coisas, não. Cada uma cria "uma máquina pequena para testar", "uma cópia por precaução", "uma base de dados só por um momento", e nenhuma vê o que as outras criam. Ninguém gasta muito; entre todas, a fatura duplica em três meses. E quando chega, não há maneira de saber de quem é cada euro.
A solução não é proibir, mas sim dar a cada pessoa um valor por mês e tornar visível quanto já gastou. É o mesmo que um cartão de empresa com limite: ninguém o leva a mal, e evita 90 % dos sustos.
A AWS não tem um "orçamento por utilizador" como tal. Pode imitar-se com três peças: uma etiqueta obrigatória com o nome de quem cria cada coisa, um orçamento (Budgets) filtrado por essa etiqueta e uma política IAM que impeça criar sem etiqueta. Os passos abaixo montam-no; as secções seguintes explicam como decidir os valores e o que contar.
Antes de começar: o que significa cada coisa
- Etiqueta
- Um par nome = valor que se põe em cada coisa que se cria na AWS (por exemplo, Propietario = ana) para depois agrupar a despesa por ele.
- Etiqueta de alocação de custos
- Uma etiqueta que ativou em Faturação para que o Cost Explorer e o Budgets possam filtrar por ela. Sem a ativar, a etiqueta existe mas não serve para custos.
- Budgets (Orçamentos)
- A ferramenta da AWS para fixar um valor por mês e receber um e-mail quando a despesa real ou prevista o ultrapassa. Avisa; não bloqueia.
- IAM
- O sistema de utilizadores e permissões da AWS. Cada pessoa tem um utilizador e umas permissões que dizem o que pode criar, ver ou apagar.
- Política
- Um texto em formato JSON que concede ou nega permissões no IAM. Uma política de negação ganha sempre a qualquer permissão concedida.
- Cost Explorer
- O ecrã da AWS que mostra a despesa em gráficos e a deixa agrupar por serviço, região, conta ou etiqueta.
- Despesa real e previsão
- O que já se consumiu este mês e o que a AWS calcula que terá consumido no fim do mês ao ritmo atual.
- Instantâneo
- Uma cópia de um disco ou de uma máquina. Cobra-se por GB por mês enquanto existir; é o objeto que mais se acumula sem que ninguém repare.
- Bucket
- Uma "pasta" do S3 onde se guardam ficheiros. Cobra-se o espaço e o que se descarrega.
Passo a passo
Decida a etiqueta e diga-o a toda a gente
Escolha um nome de etiqueta e um formato de valor, e nunca mais os mude: por exemplo
Propietariocom o nome de utilizador IAM de cada pessoa (Propietario = ana). Escreva-o num sítio que todos vejam. A partir de agora, tudo o que se criar (máquinas, discos, instantâneos, bases de dados, buckets) leva essa etiqueta.Ative a etiqueta como etiqueta de alocação de custos
Na consola da AWS, menu da sua conta, Faturação e Gestão de Custos, secção Etiquetas de alocação de custos. Procure
Propietariona lista de etiquetas definidas pelo utilizador e clique em Ativar. Enquanto não estiver ativada, o Cost Explorer e o Budgets não conseguem filtrar por ela. Demora até 24 horas a aparecer, e só conta a despesa desde que se ativa, não a anterior.Crie um orçamento por pessoa no Budgets
Em Faturação e Gestão de Custos, entre em Orçamentos e clique em Criar orçamento. Escolha Personalizar, tipo Orçamento de custos, período Mensal, montante fixo (por exemplo
60dólares). Em Filtros, escolha a dimensão Etiqueta, chavePropietario, valorana. Dê-lhe o nomepresupuesto-ana.Nos alertas, acrescente dois: quando a despesa real ultrapassar 80 % e quando a previsão ultrapassar 100 %, com o e-mail dessa pessoa e o seu. Repita o orçamento para cada pessoa. Os dois primeiros orçamentos da conta são gratuitos; a partir daí custam uns cêntimos por dia cada um.
Impeça criar máquinas sem etiqueta
Em IAM, Políticas, Criar política, editor JSON. Uma política de negação como esta impede criar uma instância EC2 ou um volume que não leve a 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" } } }] }Anexe a política ao grupo de utilizadores. Com uma condição parecida (
StringNotEqualssobreaws:RequestTag/Propietarioe a variável${aws:username}) pode obrigar a que o valor seja o próprio nome de utilizador, para que ninguém atribua as suas máquinas a outra pessoa. Cada serviço tem as suas ações (rds:CreateDBInstance,lightsail:CreateInstances); comece pelo EC2 e pelo RDS, que é onde está o dinheiro.Limite os tamanhos que se podem criar
Um orçamento avisa, mas não trava uma máquina de 2 dólares à hora criada numa sexta-feira à tarde. Acrescente outra política de negação para
ec2:RunInstancescom a condiçãoec2:InstanceTypefora de uma lista (t3.micro,t3.small,t3.medium...). Quem precisar de algo maior, pede. No RDS o equivalente érds:DatabaseClass.Reveja uma vez por mês
No Cost Explorer, agrupe pela etiqueta
Propietario. Verá uma barra por pessoa e outra, "Sem etiqueta", com tudo o que foi criado a saltar a regra ou antes de a pôr. Essa barra é a lista de tarefas: etiquetar ou apagar. Dedique dez minutos no início de cada mês e comente os valores com a equipa. A transparência faz mais do que qualquer política.
Porque dispara a despesa com várias pessoas
Não é má-fé nem descuido; é que a consola da AWS não dá nenhum sinal do que custa cada clique. Criar uma máquina não mostra o preço por mês, só o tipo. Um instantâneo não avisa de que se cobra para sempre. E cada pessoa vê a conta como "sua": não sabe que já há três máquinas de testes de outros colegas a fazer o mesmo.
Os três padrões que mais dinheiro custam:
- Criar e esquecer. Uma máquina para um teste de dois dias que continua ligada três meses. É, de longe, a causa número um.
- Cópias "por precaução". Instantâneos antes de cada alteração, que ninguém apaga depois.
- Tamanho por comodidade. Escolher uma máquina quatro vezes maior do que o necessário "para que ande bem", sem saber que custa quatro vezes mais.
Como definir o valor
Comece pelo que já se gasta. Veja no Cost Explorer os últimos três meses e distribua-o mentalmente por pessoa (se não há etiquetas, pergunte). O normal é que uma ou duas pessoas tenham quase toda a despesa legítima (produção) e o resto seja testes e desenvolvimento.
Separe duas coisas: o partilhado (os servidores de produção, a base de dados da empresa) e o pessoal (o que cada um cria para o seu trabalho). O orçamento por utilizador aplica-se só ao segundo. Para uma pessoa de desenvolvimento, um valor razoável fica entre 30 e 100 dólares por mês: dá para uma ou duas máquinas pequenas ligadas em horário de escritório e uns quantos instantâneos. Para alguém que só consulta, zero.
Ponha o valor um pouco acima do que gasta hoje quem mais gasta de forma razoável, e baixe-o passados dois meses se sobrar.
O que contar no orçamento de cada pessoa
Tudo o que essa pessoa criar e tenha um custo recorrente:
- Máquinas EC2 e Lightsail, por horas ou por plano mensal. Lembre-se de que no Lightsail a máquina parada é cobrada.
- Discos dessas máquinas, incluindo os que ficam soltos ao apagá-las.
- Bases de dados RDS e do Lightsail, que costumam ser o objeto mais caro que uma pessoa cria.
- Instantâneos, por GB por mês enquanto existirem.
- Buckets do S3: espaço e, sobretudo, o que se descarrega deles.
- IPs reservados e sem associar.
O que não é preciso contar ao início: transferência de dados, registos do CloudWatch, consultas DNS. São pequenos e difíceis de atribuir. Concentre-se no que se cria com um botão e se esquece.
Uma armadilha: o Budgets conta a despesa acumulada do mês. O que alguém criou no dia 2 e apagou no dia 3 continua a somar, mesmo que o objeto já não exista.
O que a AWS não consegue fazer
Convém ser honesto com os limites da montagem:
- O Budgets avisa, não bloqueia. Existem as "ações de orçamento", que aplicam uma política de negação ao ultrapassar um limiar, mas são toscas e chegam tarde: a despesa já está feita.
- As etiquetas dependem de as pessoas as porem. A política IAM obriga no EC2 e no RDS, mas nem todos os serviços admitem etiquetar no momento de criar, e os instantâneos automáticos não herdam a etiqueta do disco.
- O Lightsail etiqueta, mas a sua consola não obriga, e o que foi criado antes de ativar a etiqueta de custo não se conta.
- Dá trabalho manter: cada pessoa nova é um orçamento, um valor de etiqueta e uma revisão; cada pessoa que sai, limpar o que é dela.
Ainda assim, é muito melhor do que nada.
O que pode correr mal
O orçamento não mostra nenhuma despesa
Quase sempre é porque a etiqueta não está ativada como etiqueta de alocação de custos, ou porque a ativou há menos de um dia. Verifique em Faturação. E lembre-se de que só conta desde a ativação: a despesa das máquinas etiquetadas na semana passada não aparece retroativamente.
Há muita despesa "Sem etiqueta"
É o normal no primeiro mês. Agrupe no Cost Explorer por serviço dentro de "Sem etiqueta" para ver o que é: costumam ser máquinas antigas, discos soltos e instantâneos. Etiquete-os (no EC2 pode selecionar vários e acrescentar etiquetas de uma vez) ou apague-os. Se a despesa sem etiqueta for de produção partilhada, dê-lhe a etiqueta Propietario = compartido e está feito.
Alguém não consegue criar uma máquina
A política de negação está a funcionar: essa pessoa está a tentar criar sem etiqueta ou com um tamanho não permitido. Na consola, o erro diz "not authorized ... with an explicit deny". Que acrescente a etiqueta no passo de criação (secção Etiquetas do assistente do EC2) ou escolha um tamanho da lista. Se precisar mesmo de algo maior, acrescenta-o à lista da política.
Os instantâneos automáticos não levam etiqueta
Os instantâneos que o AWS Backup ou o Data Lifecycle Manager criam herdam etiquetas se o configurar na regra; os automáticos do Lightsail não se podem etiquetar. Conte essa despesa como partilhada ou calcule à parte quanto representam (são fáceis de ver na fatura, como "snapshot").
No Simplio
No Simplio o orçamento por utilizador é uma casa na ficha de cada pessoa: um valor por mês. Tudo o que essa pessoa cria a partir do Simplio (máquinas, bases de dados, instantâneos, buckets) fica registado em seu nome com o seu custo aproximado e, se o apagar no mesmo mês, é-lhe descontado. Cada utilizador vê quanto já gastou e quanto lhe resta antes de criar seja o que for, e recebe um aviso por e-mail ao aproximar-se do limite; o administrador vê todas as pessoas no ecrã Custos. Não é preciso etiquetar, ativar nada em Faturação nem escrever políticas.
Combinado com as permissões por utilizador e por objeto (quem pode criar, quem só pode ver, quem pode apagar o quê) e o registo de atividade, sabe em todo o momento quem criou cada coisa e quando.
O mesmo, na AWS e no Simplio
| Na consola da AWS | No Simplio | |
|---|---|---|
| Dar um limite mensal a cada pessoa | Etiqueta obrigatória, ativá-la em Faturação, um orçamento por pessoa, políticas IAM: 6 passos e manutenção | Um valor na ficha de cada utilizador |
| Saber o que cada um criou | Cost Explorer por etiqueta, só o etiquetado e desde que se ativou | O que se cria a partir do Simplio fica registado em nome de quem o criou, com o seu custo aproximado |
| Impedir que se crie a mais | Políticas de negação por tamanho de máquina | Permissões por utilizador e por objeto, e aviso ao aproximar-se do orçamento |