Na nuvem, pagamos por armazenamento, computação e outros serviços à medida que os usamos. Não há necessidade de configurar seu próprio servidor. No entanto, a desvantagem é que você pode acidentalmente gastar mais dinheiro do que tem em sua carteira. Isso é especialmente difícil com soluções sem servidor que escalam automaticamente com o tráfego de entrada.
Deixe acidentalmente uma VM cara sem supervisão ou suas funções lambda ficarão fora de controle - e isso pode levar a uma pontuação inesperada.
Neste artigo, vamos dar uma olhada em como funciona o faturamento e como evitar que faturas inesperadas apareçam.
Pequenas empresas, contas pequenas
Este artigo é sobre projetos pessoais e pequenas empresas com contas relativamente pequenas. Algumas grandes corporações podem não notar a diferença de $ 3.000.
Não há solução perfeita
Infelizmente, não existe uma solução perfeita aqui. De acordo com Corey Quinn em seu podcast , o sistema de faturamento da AWS está várias horas atrasado e, em alguns casos, até 24 ou 48 horas atrasado. Como resultado, os alertas de excesso de cota podem ser acionados várias horas ou dias após a ocorrência de uma saturação significativa. Os alertas ainda são uma ótima ferramenta para se proteger contra custos desnecessários, mas apenas nos casos em que você esqueceu algo por alguns dias, por exemplo, não parou uma instância EC2 cara após um workshop de aprendizado de máquina.
Você decide quanto tempo deve gastar protegendo contra despesas inesperadas, mas eu recomendo fortemente gastar dois minutos configurando alertas de orçamento !
Mecanismos de defesa
Existem muitos mecanismos de proteção contra contas inesperadas. Considere a segurança, alertas, ações corretivas e melhoria da visibilidade.
1. Proteja sua conta com autenticação multifator
Esta é a primeira coisa que você deve configurar ao criar uma nova conta da AWS.
Este é o guia oficial da AWS sobre como configurar a autenticação multifator (MFA), que fornece uma barreira adicional contra invasores.
2. Alertas de orçamento
Esta é a segunda coisa a configurar ao criar uma nova conta AWS.
Os alertas de orçamento são a forma mais comum de controlar seus gastos. Por exemplo, você recebe uma notificação por email informando que o limite foi excedido. Você pode personalizar ainda mais suas notificações usando Amazon SNS ou AWS Chatbot .
Aqui está um pequeno vídeo (52 segundos) sobre como criar seu primeiro alerta de orçamento. Ryan Lewis fez um vídeo mais longo com mais detalhes, detalhes sobre alertas de orçamento e muitas maneiras de personalizá-los.
Se você já estiver usando o CDK, o pacote aws-budget-notifier é o melhor....
Com quanto para começar?
Comece com um valor um pouco maior do que suas despesas atuais e com o qual você se sinta confortável. Por exemplo, $ 10. Se você já tem cargas de trabalho em execução há vários meses, calcule a média e adicione 50%.
Também recomendo configurar vários alertas de faturamento com limites diferentes :
- Aviso conveniente: o valor que você está disposto a suportar, mas analise a conta.
- Aviso perigoso: você não se sente mais confortável e deseja encerrar o serviço o mais rápido possível. Se o valor confortável for US $ 10, isso poderá ser US $ 100.
- Aviso crítico: com este valor, já existe a vontade de lançar uma bomba nuclear na sua conta. Se o valor confortável for $ 10, isso poderá ser $ 500. Você pode anexar um orçamento especial ou alertas de pager a este alerta para interromper automaticamente suas instâncias EC2 ou acordá-lo.
Além dos limites predefinidos, você também pode experimentar o AWS Service Cost Anomaly Detection .
Bomba Nuclear de Emergência
Como você pode enviar notificações ao SNS, pode executar uma função lambda que inicia o aws-nuke , destruindo toda a infraestrutura em sua conta. Nunca use isso em uma conta de produção. Confira o repositório GitHub para mais informações .
3. Ações orçamentárias
A AWS introduziu recentemente ações de orçamento. Esta é uma extensão dos alertas de orçamento, onde certas ações são acionadas quando o limite do orçamento é excedido. Além de enviar notificações por email, agora você pode aplicar políticas IAM personalizadas, como “Impedir o lançamento de instâncias EC2” ou permitir que a AWS feche instâncias EC2 e RDS, conforme mostrado abaixo.

4. Aplicativo móvel
O AWS Mobile Console oferece a capacidade de verificar todas as suas despesas em 3 a 5 cliques.
Aqui estão duas telas do aplicativo móvel:

Para usar o aplicativo, você deve configurar um usuário dedicado que obtém apenas as permissões de que o aplicativo precisa para exibir suas despesas.
Aqui está a política de IAM que dá ao aplicativo acesso de leitura, bem como notificações do Cloudwatch.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ce:DescribeCostCategoryDefinition", "ce:GetRightsizingRecommendation", "ce:GetCostAndUsage", "ce:GetSavingsPlansUtilization", "ce:GetReservationPurchaseRecommendation", "ce:ListCostCategoryDefinitions", "ce:GetCostForecast", "ce:GetReservationUtilization", "ce:GetSavingsPlansPurchaseRecommendation", "ce:GetDimensionValues", "ce:GetSavingsPlansUtilizationDetails", "ce:GetCostAndUsageWithResources", "ce:GetReservationCoverage", "ce:GetSavingsPlansCoverage", "ce:GetTags", "ce:GetUsageForecast", "health:DescribeEventAggregates", "cloudwatch:DescribeAlarms", "aws-portal:ViewAccount", "aws-portal:ViewUsage", "aws-portal:ViewBilling" ], "Resource": "*" } ] }
As permissões são divididas em três grupos:
- CloudWatch Cost Explorer (tudo que começa com
ce:
). Informações detalhadas sobre os custos atuais e projetados.
- CloudWatch (
cloudwatch:DescribeAlarms
). , .
- (,
aws-portal:
health:
). .
5.
Se você acidentalmente carregar chaves de acesso em um repositório público , os invasores podem iniciar instâncias EC2 caras em sua conta e usá-las, por exemplo, para minerar bitcoins. Existem relatos de casos em que pequenas instâncias estão escondidas em regiões subutilizadas de forma que o proprietário não as percebe nos detalhes de faturamento.
Você pode usar o AWS Secrets Manager para limpar senhas ou outros segredos do seu código .
Siga este guia da AWS para criar seu primeiro segredo . Em seguida, substitua o segredo da base de código, solicitando-o usando um dos clientes AWS oficiais ( boto3 para Python ).
import boto3
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId='replace-me')
secret = response['SecretString']
Observe que cada segredo custa $ 0,40 por mês, mais $ 0,05 para 10.000 chamadas de API.
Serviço de suporte
Se você receber uma fatura inesperada, interrompa todos os aplicativos que causaram a situação, altere as chaves de acesso, se necessário, e entre em contato com o Suporte da AWS. Aqui está um vídeo de 20 segundos sobre onde clicar.
Instruções passo a passo para enviar um tíquete de suporte:
- No canto superior direito, clique no botão Suporte e selecione Centro de Suporte
- Pressione o botão laranja Criar caso
- Selecione conta e faturamento
- Selecione "Faturamento" como tipo e "Problema com pagamentos" como categoria
- Preencha todos os detalhes e envie
Embora alguns tenham sido reembolsados por sua fatura inesperada, não conte muito com isso.
Conclusão
A primeira coisa a fazer é configurar o MFA e os alertas de orçamento . Você pode então explorar operações mais complexas, como ações de orçamento, para congelar sua conta se os gastos aumentarem.
Para evitar que seus segredos e chaves de acesso acabem em repositórios públicos, salve-os no AWS Secrets Manager .