Skip to content

Commit

Permalink
Merge pull request #1 from Tech-Preta/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
nataliagranato authored Mar 20, 2024
2 parents f990fe2 + 0a27d7f commit 1b3b31f
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 5 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
tests/__pycache__
.vscode
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,18 @@ Para executar o script, você pode usar o seguinte comando:
python3 analise-de-custos.py
```

Ou

```
python3 -m analise_de_custos
```

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.

## Extras

- 1. **Executando o teste**:

```
python3 -m unittest tests.test_analise_de_custos
```
16 changes: 16 additions & 0 deletions __init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""
Este é o módulo principal do projeto aws_cost_py.
Ele importa e executa as funções do módulo analise_de_custos.
"""

from .analise_de_custos import get_custom_date_range, list_costs_by_service

def main():
"""
Função principal que solicita ao usuário um intervalo de datas e lista os custos dos serviços AWS para esse intervalo.
"""
start_date, end_date = get_custom_date_range()
list_costs_by_service(start_date, end_date)

if __name__ == "__main__":
main()
Binary file added __pycache__/analise_de_custos.cpython-311.pyc
Binary file not shown.
31 changes: 26 additions & 5 deletions analise-de-custos.py → analise_de_custos.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
import boto3
"""
Este é o módulo analise_de_custos.
Ele contém funções para analisar os custos dos serviços AWS.
"""
import datetime
import boto3

# 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
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():

"""
Solicita ao usuário que 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.
"""

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): ")
Expand All @@ -20,9 +30,19 @@ def get_custom_date_range():
except ValueError:
print("Formato de data inválido. Use o formato AAAA-MM-DD.")
return get_custom_date_range()
except KeyboardInterrupt:
print("\nExecução interrompida pelo usuário.")
return None

# Função para obter e listar os serviços e valores de gastos
def list_costs_by_service(start_date, end_date):
"""
Obtém e lista os custos dos serviços AWS para o período de tempo especificado.
"""

if not start_date or not end_date:
return

response = ce_client.get_cost_and_usage(
TimePeriod={
'Start': start_date.strftime('%Y-%m-%d'),
Expand All @@ -42,9 +62,10 @@ def list_costs_by_service(start_date, end_date):
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}")
cost_brl = f"{cost * CURRENCY_CONVERSION_RATE:.2f}"
print(f"Serviço: {service_name}, Custo em USD: ${cost:.2f}, Custo em BRL: R${cost_brl}")

if __name__ == '__main__':
start_date, end_date = get_custom_date_range()
list_costs_by_service(start_date, end_date)
if start_date and end_date:
list_costs_by_service(start_date, end_date)
18 changes: 18 additions & 0 deletions tests/test_analise_de_custos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""
Este é o módulo de teste para o módulo analise_de_custos.
Ele contém testes unitários para as funções get_custom_date_range e list_costs_by_service.
"""

import unittest
from analise_de_custos import get_custom_date_range

class TestAnaliseDeCustos(unittest.TestCase):
"""
Esta classe contém testes unitários para o módulo analise_de_custos.
"""

def test_get_custom_date_range_valid_input(self):
"""
Testa a função get_custom_date_range com uma entrada válida.
"""
input_start_date, input_end_date = get_custom_date_range()

0 comments on commit 1b3b31f

Please sign in to comment.