Configurando o Amazon QuickSight para custos na AWS
Tags: aws, finops, quicksight, cur
Published: 2022-04-01 23:05:55

Olá!

Quando queremos controlar nossos custos na AWS, a imagem sempre que vem a cabeça é a de dashboards e reports, certo?

Com o [Amazon QuickSight](https://aws.amazon.com/quicksight/) conseguimos montar essas visualizações de uma maneira bem simples e profissional!

Nesse artigo rápido vou mostrar o passo-a-passo de como configurar do zero o QuickSight + [CUR (Cost and Usage Report)](https://aws.amazon.com/aws-cost-management/aws-cost-and-usage-reporting/) da AWS

### 1. Criando seu _Cost and Usage Reports_

O primeiro passo é configurar um CUR para que a AWS envie os dados de custo da(s) sua(s) conta(s). Caso você tenha diversas contas (controladas pela _Organization_), você poderá configurar na sua _Payer Account_, pois ai terá todos os dados de todas as contas, senão pode seguir na sua conta individual

No serviço de _"Billing"_, vá em _"Cost & Usage Reports"_ e clique em _"Create Report"_; Nessa primeira tela será solicitado o nome do seu report

**Dica:** Caso você queria mais detalhes no reports, selecione _"Include resource IDs"_, pois ele irá adicionar os IDs dos recursos...mas cuidado, dependendo da utilização da sua conta, isso poderá aumentar bem a quantidade de registros nos seus reports, por consequência os custos

![Tela da etapa 1 da criação de um novo CUR](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofc22j45zj61usqcvptt.png) 

Na próxima tela você irá configurar o bucket onde a AWS irá enviar os reports, e selecionar a integração com Amazon Athena

**Dica 1:** Crie um novo bucket dedicado somente para esses reports

**Dica 2:** Caso você queria detalhes por hora dos seus custos, para controlar por exemplo em qual horário temos mais utilização de recursos, marque a granularidade para _"Hourly"_, pois depois de configurado, não será possível alterar

![Tela da etapa 2 da criação de um novo CUR](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lr04u0ne8t57vsslrepa.png)

E na última tela ele irá mostrar uma revisão, basta finalizar e pronto! Seu novo CUR está configurado! Agora é necessário esperar pelo menos 24 horas para a AWS começar a enviar os dados para o seu bucket

### 2. Criando o _Crawler_ e a tabela no Athena

Após os primeiros arquivos começarem a ser enviados, já conseguimos criar uma crawler para popular uma tabela Athena com os dados do billing

Gosto de utilizar o Athena para esse fim, porque se preciso extrair mais informações, sem a necessidade visual, escrevo as queries e executo direto no Athena

No serviço _"AWS Glue"_, vá em _"Crawlers"_ e _"Add crawler"_, na primeira tela vamos definir o nome do nosso crawler

![Tela da etapa 1 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kq2m5v4hhzk21yc0gmp4.png
)

Depois vamos configurar o tipo, mas nessa tela podemos deixar o padrão mesmo

![Tela da etapa 2 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nlot4dqjhnpg59dfyiej.png)

Agora vamos indicar onde está nossos arquivos de dados, ou seja, os dados do CUR que criamos no **passo 1**, onde basta indicar o bucket e a path onde os arquivos estão

A path geralmente será _"{BUCKET}/awscur/{NOME DO BUCKET}/{NOME DO BUCKET}"_ (sim, ficou estranho, mas é o jeito que os arquivos são enviados hahaha)

Outra configuração é excluir algumas extensões no momento do scan, onde você pode adicionar essas aqui:

`**.json
**.yml
**.sql
**.csv
**.gz
**.zip`

![Tela da etapa 3 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jpf6z24lytifvp4dcvey.png)
 
Na próxima tela, pode deixar a opção _"No"_ selecionada, pois não vamos precisar de outro data store

![Tela da etapa 4 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bdqe35ligsz0hjmlbcg8.png)

Agora vamos configurar a role para execução do serviço, onde podemos criar uma nova sem problemas!

![Tela da etapa 5 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxdvf47qghgvatsytmvd.png)

Na tela de frequência de execução, podemos configurar para executar diariamente, visto que o report completo do CUR geralmente é D-2 (hoje menos 2 dias)

![Tela da etapa 6 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgj6b7r1j3abpuxuouyk.png)

Nesse momento, vamos configurar a database onde os dados serão enviados, e como não temos uma database, pode clicar em _"Add database"_

Na tela que irá abrir, preencha o nome da sua database, e o restante pode deixar o padrão mesmo

Após clicar em _"Create"_, irá voltar para a tela da **etapa 6**, nessa tela expanda a configuração _"Configuration options (optional)"_ e selecione a configuração _"Delete tables and partitions from the data catalog"_

![Tela da etapa 7 da criação do Crawler](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kncmvwegxhp609kt1zbr.png)

A última tela irá fazer uma revisão das suas configurações, e caso esteja tudo OK, basta clicar em _"Finish"_

Pronto! Sua configuração está feita! Selecione o seu novo crawler criado e clique no botão _"Run crawler"_ para fazermos a primeira execução dele, e caso tudo certo, será exibido que uma nova tabela foi adicionada!

### 3. Criando seu Cost and Usage Reports

A última etapa do processo é conectar essa nossa nova tabela do Athena no QuickSight, e para isso vamos acessar o serviço _"QuickSight"_

**Nota:** Caso seja a primeira vez que você entra no QuickSight, ele irá solicitar para criar um novo usuário. Recomendo visitar a [página de custos do QuickSight](https://aws.amazon.com/quicksight/pricing/) para entender um pouco mais sobre os valores cobrados

Já no QuickSight, a primeira coisa que devemos fazer é configurar um novo Dataset apontando para a nossa tabela no Athena, então na tela principal clique em _"Datasets"_ na lateral esquerda e em seguida em _"New dataset"_

Nas opções exibidas selecione _"Athena"_, e irá abrir uma janela onde você deve colocar o nome do seu dataset, e após isso, só clicar em _"Create data source"_

Ele irá avançar para uma próxima tela onde irá exibir suas tabelas do Athena disponível, basta selecionar a database e tabela que criamos na **etapa 2** e clicar em _"Select"_

Na próxima tela, você poderá utilizar o _SPICE_ (armazenamento do próprio QuickSight) ou executar as queries direto (geralmente utilizo essa)

E pronto...nosso dataset está criado! Ele irá gerar uma análise já utilizando esse dataset novo, porém ainda temos que fazer mais uma liberação...

Na parte superior, clique no usuário e em _"Manage QuickSight"_

Quando abrir a tela, vá em _"Security & permissions"_, e em _"QuickSight access to AWS services"_ clique no botão _"Manage"_

Na tela que abrir, logo abaixo de _"Amazon S3"_, clique em _"Select S3 buckets"_ e no modal que será aberto, selecione o bucket criado na **etapa 1**

Pronto! Seu dataset está pronto e agora é só criar suas análises! Em próximos artigo vou mostrar algumas sugestões de dashboards voltados a custos na AWS e como cria-los!

### Referencias

- Custos do QuickSight:
https://aws.amazon.com/quicksight/pricing/
- Documentação QuickSight: https://aws.amazon.com/quicksight/
- Documentação do Athena: https://aws.amazon.com/athena/
- Documentação CUR: https://aws.amazon.com/aws-cost-management/aws-cost-and-usage-reporting/
- Cost Optimization no AWS Well-Architected Labs: https://www.wellarchitectedlabs.com/cost/


_Até mais e muito obrigado pela Leitura! Ah, e se sentiu falta de alguma informação, algo que possa estar errado ou se quiser tirar dúvidas, fiquem a vontade de comentar!_ :smiley: