Skip to content

Commit

Permalink
feat: add analise-de-custos-py
Browse files Browse the repository at this point in the history
  • Loading branch information
nataliagranato committed Mar 20, 2024
1 parent c8f5a21 commit 721d4f5
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 1 deletion.
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,34 @@
# aws-cost-py
# Análise de Custos AWS

Este projeto é um script Python que permite ao usuário analisar os custos dos serviços AWS em um período de tempo específico. Ele usa a biblioteca boto3 para interagir com a AWS e a biblioteca datetime para manipular datas.

## Pré-requisitos

- Python 3.6 ou superior
- Uma conta AWS com acesso ao serviço de custos e uso (CE)
- A biblioteca boto3 instalada
- As credenciais da AWS configuradas (você pode configurá-las usando o comando `aws configure` do AWS CLI)

## Instalação

Para instalar as dependências necessárias, você pode usar o pip, que é o gerenciador de pacotes do Python. Se você estiver usando um ambiente virtual (recomendado), você pode instalar as dependências executando:

```bash
pip install -r requirements.txt
```

Se você não estiver usando um ambiente virtual, você pode instalar as dependências globalmente executando:

```
pip install --user -r requirements.txt
```

## Execução

Para executar o script, você pode usar o seguinte comando:

```
python3 analise-de-custos.py
```

O script irá solicitar que você insira as datas de início e término para a análise de custos. As datas devem ser inseridas no formato AAAA-MM-DD. Em seguida, o script irá listar os custos dos serviços AWS para o período de tempo especificado.
50 changes: 50 additions & 0 deletions analise-de-custos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import boto3
import datetime

# Configuração do cliente boto3
ce_client = boto3.client('ce', region_name='us-east-1') # Substitua 'us-east-1' pela sua região

# Taxa de câmbio da AWS para converter para BRL
currency_conversion_rate = 5.50 # Substitua pelo valor da taxa de câmbio atual

# Função para obter o período desejado de forma interativa
def get_custom_date_range():
print("Digite o período desejado para análise de custos:")
start_date_str = input("Data de início (AAAA-MM-DD): ")
end_date_str = input("Data de término (AAAA-MM-DD): ")

try:
start_date = datetime.datetime.strptime(start_date_str, '%Y-%m-%d').date()
end_date = datetime.datetime.strptime(end_date_str, '%Y-%m-%d').date()
return start_date, end_date
except ValueError:
print("Formato de data inválido. Use o formato AAAA-MM-DD.")
return get_custom_date_range()

# Função para obter e listar os serviços e valores de gastos
def list_costs_by_service(start_date, end_date):
response = ce_client.get_cost_and_usage(
TimePeriod={
'Start': start_date.strftime('%Y-%m-%d'),
'End': end_date.strftime('%Y-%m-%d')
},
Granularity='MONTHLY',
Metrics=['BlendedCost'], # Pode adicionar outras métricas, se desejar
GroupBy=[
{
'Type': 'DIMENSION',
'Key': 'SERVICE'
}
]
)

for result in response['ResultsByTime']:
for group in result['Groups']:
service_name = group['Keys'][0]
cost = float(group['Metrics']['BlendedCost']['Amount'])
cost_brl = cost * currency_conversion_rate
print(f"Serviço: {service_name}, Custo em USD: ${cost:.2f}, Custo em BRL: R${cost_brl:.2f}")

if __name__ == '__main__':
start_date, end_date = get_custom_date_range()
list_costs_by_service(start_date, end_date)
11 changes: 11 additions & 0 deletions docs/DOC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# O que o script faz?

Este script Python é usado para analisar os custos dos serviços AWS em um período de tempo específico. Ele usa a biblioteca boto3 para interagir com a AWS e a biblioteca datetime para manipular datas.

No início do script, um cliente boto3 é configurado para interagir com o serviço de custos e uso da AWS (ce). A região é definida como 'us-east-1', mas pode ser substituída por qualquer região AWS válida. Além disso, uma taxa de câmbio é definida para converter os custos de USD para BRL.

A função [`get_custom_date_range()`](command:_github.copilot.openSymbolInFile?%5B%22analise-de-custos.py%22%2C%22get_custom_date_range()%22%5D "analise-de-custos.py") é usada para obter o período de tempo para a análise de custos. Ela solicita ao usuário que insira as datas de início e término no formato AAAA-MM-DD. Se o usuário inserir as datas em um formato inválido, a função irá capturar a exceção ValueError e solicitará ao usuário que insira as datas novamente.

A função `list_costs_by_service(start_date, end_date)` é usada para obter e listar os custos dos serviços AWS para o período de tempo especificado. Ela usa o método `get_cost_and_usage()` do cliente boto3 para obter os custos e o uso dos serviços AWS. Os custos são agrupados por serviço e a granularidade é definida como 'MONTHLY'. Para cada serviço, o nome do serviço, o custo em USD e o custo em BRL são impressos.

Finalmente, se o script for executado como um programa independente (ou seja, não importado como um módulo), as funções [`get_custom_date_range()`](command:_github.copilot.openSymbolInFile?%5B%22analise-de-custos.py%22%2C%22get_custom_date_range()%22%5D "analise-de-custos.py") e `list_costs_by_service(start_date, end_date)` serão chamadas para obter o período de tempo do usuário e listar os custos dos serviços AWS para esse período.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
boto3

0 comments on commit 721d4f5

Please sign in to comment.