Custos da AWS: Guia de Otimização para Iniciantes
Descubra como entender e otimizar os custos da AWS.
I
InSkillCoach
· min
Custos da AWS: Guia de Otimização para Iniciantes
Descubra como entender e otimizar os custos da AWS.
1. Entendendo a Cobrança da AWS
Serviços Gratuitos
- AWS Free Tier: Serviços gratuitos por 12 meses
- Serviços sempre gratuitos:
- Lambda: 1 milhão de invocações/mês
- CloudWatch: 10 métricas, 1 milhão de requisições
- S3: 5 GB de armazenamento
- DynamoDB: 25 GB de armazenamento
Cobrança por Serviço
# Exemplo de cálculo dos custos
def calculate_costs():
# EC2 : Facturation par heure
ec2_cost = {
't2.micro': 0.0116, # por hora
't2.small': 0.023, # por hora
't2.medium': 0.0464 # por hora
}
# S3 : Facturation par GB/mois
s3_cost = {
'standard': 0.023, # por GB/mês
'infrequent': 0.0125, # por GB/mês
'glacier': 0.004 # por GB/mês
}
# Lambda : Facturation par requête
lambda_cost = {
'requests': 0.0000002, # por requisição
'duration': 0.00001667 # por 100ms
}
return {
'ec2': ec2_cost,
's3': s3_cost,
'lambda': lambda_cost
}
2. Serviços a Monitorar
Amazon Athena
- Cobrança: Por byte escaneado
- Otimização:
# Exemplo de otimização do Athena
def optimize_athena_query():
# 1. Particionar os dados
partition_query = """
CREATE TABLE ma_table_partitionnee
PARTITIONED BY (annee INT, mois INT)
AS SELECT * FROM ma_table;
"""
# 2. Compactar os dados
compression_query = """
CREATE TABLE ma_table_compressee
WITH (format = 'PARQUET', compression = 'SNAPPY')
AS SELECT * FROM ma_table;
"""
return {
'partition_query': partition_query,
'compression_query': compression_query
}
Amazon Redshift
- Cobrança: Por hora de cluster
- Otimização:
# Exemplo de otimização do Redshift
def optimize_redshift():
# 1. Escolher o tipo de nó adequado
node_types = {
'dc2.large': 0.25, # por hora
'dc2.8xlarge': 2.36, # por hora
'ra3.xlplus': 0.24 # por hora
}
# 2. Configurar o WLM (Workload Management)
wlm_config = {
'concurrency_scaling': True,
'max_concurrency': 50,
'query_timeout': 300
}
return {
'node_types': node_types,
'wlm_config': wlm_config
}
3. Boas Práticas de Otimização
Desligar Recursos Não Utilizados
# Exemplo de desligamento automático
def stop_unused_resources():
ec2 = boto3.client('ec2')
# Parar as instâncias EC2 inativas
instances = ec2.describe_instances(
Filters=[
{
'Name': 'instance-state-name',
'Values': ['running']
}
]
)
for instance in instances['Reservations']:
# Verificar a utilização de CPU
cloudwatch = boto3.client('cloudwatch')
cpu_usage = cloudwatch.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUUtilization',
Dimensions=[{'Name': 'InstanceId', 'Value': instance['InstanceId']}],
StartTime=datetime.now() - timedelta(hours=24),
EndTime=datetime.now(),
Period=3600,
Statistics=['Average']
)
# Parar se a utilização for < 5%
if cpu_usage['Datapoints'][-1]['Average'] < 5:
ec2.stop_instances(InstanceIds=[instance['InstanceId']])
Usar Reservas
# Exemplo de compra de reserva
def purchase_reservation():
ec2 = boto3.client('ec2')
# Comprar uma reserva EC2
reservation = ec2.purchase_reserved_instances_offering(
ReservedInstancesOfferingId='offering-id',
InstanceCount=1,
LimitPrice={
'Amount': '100',
'CurrencyCode': 'USD'
}
)
return reservation['ReservedInstancesId']
4. Configuração de Alertas
Configuração de Orçamentos
# Exemplo de configuração de orçamento
def setup_budget():
budgets = boto3.client('budgets')
# Criar um orçamento mensal
budget = budgets.create_budget(
AccountId='account-id',
Budget={
'BudgetName': 'MonBudget',
'BudgetLimit': {
'Amount': '100',
'Unit': 'USD'
},
'TimeUnit': 'MONTHLY',
'BudgetType': 'COST',
'CostFilters': {
'Service': ['Amazon EC2', 'Amazon S3']
}
},
NotificationsWithSubscribers=[
{
'Notification': {
'NotificationType': 'ACTUAL',
'ComparisonOperator': 'GREATER_THAN',
'Threshold': 80,
'ThresholdType': 'PERCENTAGE'
},
'Subscribers': [
{
'SubscriptionType': 'EMAIL',
'Address': 'mon-email@example.com'
}
]
}
]
)
return budget['BudgetId']
Monitoramento de Custos
# Exemplo de monitoramento de custos
def monitor_costs():
ce = boto3.client('ce')
# Obter os custos por serviço
costs = ce.get_cost_and_usage(
TimePeriod={
'Start': '2024-01-01',
'End': '2024-03-22'
},
Granularity='MONTHLY',
Metrics=['UnblendedCost'],
GroupBy=[
{'Type': 'DIMENSION', 'Key': 'SERVICE'}
]
)
return costs['ResultsByTime']
5. Ferramentas de Otimização
AWS Cost Explorer
- Funcionalidades:
- Visualização dos custos
- Previsões
- Recomendações de otimização
AWS Trusted Advisor
- Verificações:
- Custos não otimizados
- Desempenho
- Segurança
- Tolerância a falhas
Conclusão
Pontos-chave a lembrar:
- Usar o Free Tier
- Monitorar os custos por serviço
- Otimizar as consultas
- Desligar os recursos não utilizados
- Configurar alertas
Recomendações:
- Começar pequeno
- Usar as reservas
- Configurar orçamentos
- Monitorar os custos regularmente
- Otimizar continuamente
Sobre InSkillCoach
Especialista em treinamento e tecnologias
Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.
Certificações:
- AWS Certified Solutions Architect – Professional
- Certificações Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
1.5k
79
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão