Antes de tudo, é importante dizer que a AWS tem algumas soluções (além das dashboards padrões) que ajudam a entender em detalhes os custos e servem como guia para as melhorias e para a criação de uma cultura de FinOps.
Por exemplo, com uma combinação de CUDOS com Amazon QuickSight é possível ter uma visão do tipo:
Link com informações para configuração: https://aws.amazon.com/pt/blogs/mt/visualize-and-gain-insights-into-your-aws-cost-and-usage-with-cloud-intelligence-dashboards-using-amazon-quicksight/
E Agora indo para o dicas - separei por categorias para melhor entendimento, com o tempo vou atualizando com mais dicas e/ou novas categorias.
Storage
Verifique sempre por volumes EBS que não estão atachados a instâncias e se realmente são necessários, se for o caso, pode usar a flag DeleteOnTermination para remover os volumes sempre que a instância for terminada ;
Verifique se para o seu cenário, é possível mudar o tipo dos volumes EBS de uso geral de gp2 para gp3 (pode ter até 20% em redução do custo);
Faça gestão do ciclo de vida dos objetos no S3, com lifecycle rules consegue transicionar os objetos para um storage class mais barato, com o Storage Lens consegue ter uma visão geral dos objetos;
Compute
Para ambientes não produtivos (desenvolvimento/testes), configure políticas/automações para desligamento em horário não comercial;
Entenda seu workload (parece fácil falando, mas não é) - use métricas para saber qual família de instâncias atende melhor cada ambiente, uma ferramenta que pode ajudar: https://github.com/aws/amazon-ec2-instance-selector
Use autoscalling para fornecer recursos sob demanda, se usa EKS - use Karpenter para cluster autoscaling (tem esse artigo muito bom sobre o assunto escrito pelo Fidelis!)
Para ambientes/aplicações que conseguem lidar com interrupções, instâncias Spot são uma ótima escolha (se usar Karpenter consegue lidar com essas interrupções usando a funcionalidade de Spot Termination Handler);
Se aplicável, usar instâncias EC2 baseadas em processadores Graviton/Graviton2 (arm64), onde vai ter um melhor mix entre performance e preço;
Para instâncias on-demand, verifique as recomendações de Saving Plans e Reservations;
Outras dicas e recomendações de leitura
Algumas ferramentas de CLI que podem ajudar:
https://github.com/awslabs/eks-node-viewer (visualização de custos em tempo real de clusters EKS)
https://instances.vantage.sh/ (comparativo entre tipos de instâncias EC2)
Use e abuse de automações e/ou ferramentas para fazer enforcement de boas práticas de custos
https://wellarchitectedlabs.com/cost/200_labs/200_cloud_intelligence/
O material do pilar de Cost Optimization do AWS Well-Architected Framework: https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html
Leia/conheça sobre FinOps, vai ajudar bastante a desenhar estratégias de otimização de custos: https://www.finops.org/introduction/what-is-finops/