-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
nataliagranato
committed
Mar 20, 2024
1 parent
c8f5a21
commit 721d4f5
Showing
4 changed files
with
96 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
boto3 |