Fundamentos do AWS Backup
O AWS Backup é um serviço centralizado que simplifica a proteção de dados em múltiplos serviços AWS. Ao invés de configurar soluções individuais para EC2, RDS, EFS e outros, você gerencia tudo em um único painel. Uma política de backup define o quê, quando e por quanto tempo fazer backup automaticamente, eliminando a necessidade de scripts manuais e reduzindo significativamente o risco de perda de dados.
A estratégia começa com a definição clara de seus Objetivos de Ponto de Recuperação (RPO) e Objetivo de Tempo de Recuperação (RTO). RPO é quanto tempo de dados você pode perder (ex: 24 horas), enquanto RTO é quanto tempo pode ficar sem o serviço (ex: 4 horas). Essas métricas guiam toda a configuração de backups, frequência e retenção. Para começar, acesse o console AWS Backup e explore os planos de backup pré-configurados.
Configuração de Políticas Centralizadas
Criando um Plano de Backup
Você configurará um plano que especifica regras de backup para múltiplos recursos. Cada regra define frequência, janela de tempo e política de retenção. O exemplo abaixo usa Boto3, o SDK Python da AWS:
import boto3
from datetime import datetime, timedelta
backup_client = boto3.client('backup', region_name='us-east-1')
# Criar um plano de backup centralizado
response = backup_client.create_backup_plan(
BackupPlan={
'BackupPlanName': 'plano-critico-producao',
'BackupPlanRule': [
{
'RuleName': 'backup-diario-retenção-30-dias',
'TargetBackupVaultName': 'cofre-backup-central',
'ScheduleExpression': 'cron(0 2 * * ? *)', # 2h da manhã todo dia
'StartWindowMinutes': 60,
'CompletionWindowMinutes': 120,
'Lifecycle': {
'DeleteAfterDays': 30,
'MoveToColdStorageAfterDays': 7 # Move para storage frio após 7 dias
},
'RecoveryPointTags': {
'Ambiente': 'producao',
'Criticidade': 'alta'
}
},
{
'RuleName': 'backup-semanal-retenção-90-dias',
'TargetBackupVaultName': 'cofre-backup-central',
'ScheduleExpression': 'cron(0 3 ? * 1 *)', # Domingo 3h da manhã
'Lifecycle': {
'DeleteAfterDays': 90
}
}
]
}
)
print(f"Plano criado: {response['BackupPlanArn']}")
Atribuindo Recursos ao Plano
Depois de criar o plano, você precisa atribuir recursos (EC2, RDS, EFS, etc.) a ele através de seleção de tags ou ARNs específicos:
# Atribuir todos os recursos RDS com tag 'Backup=Sim' ao plano
backup_client.create_backup_selection(
BackupPlanId='plano-critico-producao',
BackupSelection={
'SelectionName': 'recursos-rds-criticos',
'IamRoleArn': 'arn:aws:iam::123456789012:role/AWSBackupServiceRole',
'Resources': [], # Vazio para usar ListOfTags
'ListOfTags': [
{
'ConditionType': 'STRINGEQUALS',
'ConditionKey': 'Backup',
'ConditionValue': 'Sim'
}
]
}
)
print("Seleção de recursos criada com sucesso")
Recuperação de Desastres Avançada
Restauração Granular e em Larga Escala
A verdadeira força do AWS Backup surge quando você precisa recuperar dados. O serviço oferece desde restauração completa de instâncias até recuperação de tabelas individuais em bancos de dados RDS. Para uma estratégia robusta de DR, configure vaults em regiões distintas:
# Copiar backups para outra região automaticamente
backup_client.create_backup_vault(
BackupVaultName='cofre-dr-us-west-2',
EncryptionKeyArn='arn:aws:kms:us-west-2:123456789012:key/12345678-1234-...'
)
# Adicionar uma regra de cópia na política de backup
backup_client.update_backup_plan(
BackupPlanId='plano-critico-producao',
BackupPlan={
'BackupPlanName': 'plano-critico-producao',
'BackupPlanRule': [
{
'RuleName': 'backup-diario-com-copia-dr',
'TargetBackupVaultName': 'cofre-backup-central',
'ScheduleExpression': 'cron(0 2 * * ? *)',
'Lifecycle': {
'DeleteAfterDays': 30,
'MoveToColdStorageAfterDays': 7
},
'CopyActions': [
{
'LifecycleToDelete': {
'DeleteAfterDays': 90
},
'DestinationVaultArn': 'arn:aws:backup:us-west-2:123456789012:backup-vault:cofre-dr-us-west-2'
}
]
}
]
}
)
Testando Recuperação
Nunca assuma que seus backups funcionam — teste regularmente. Crie um pipeline de testes automatizados que restaura recursos em ambiente de staging:
# Listar os últimos 5 pontos de recuperação de um recurso RDS
recovery_points = backup_client.list_recovery_points_by_resource(
ResourceArn='arn:aws:rds:us-east-1:123456789012:db:meu-banco',
ByBackupVaultType='AWSBACKUP'
)
if recovery_points['RecoveryPoints']:
latest_rp = recovery_points['RecoveryPoints'][0]
# Restaurar em uma instância RDS de teste
rds_client = boto3.client('rds', region_name='us-east-1')
restore_response = backup_client.start_restore_job(
RecoveryPointArn=latest_rp['RecoveryPointArn'],
IamRoleArn='arn:aws:iam::123456789012:role/AWSBackupServiceRole',
Metadata={
'availabilityZone': 'us-east-1a',
'dbInstanceIdentifier': 'meu-banco-teste-restore'
}
)
print(f"Restauração iniciada: Job ID {restore_response['RestoreJobId']}")
Monitoramento e Otimização
Configurar backups é apenas o começo. Monitore continuamente a saúde dos backups e otimize custos. Use o CloudWatch para alertas em caso de falhas:
cloudwatch = boto3.client('cloudwatch', region_name='us-east-1')
# Criar alarme para falhas de backup
cloudwatch.put_metric_alarm(
AlarmName='backup-jobs-falhando',
MetricName='FailedBackupJobs',
Namespace='AWS/Backup',
Statistic='Sum',
Period=3600,
EvaluationPeriods=1,
Threshold=1,
ComparisonOperator='GreaterThanOrEqualToThreshold',
AlarmActions=['arn:aws:sns:us-east-1:123456789012:topic-alertas-criticos']
)
# Monitore também o tamanho total de backups para controlar custos
storage_usage = backup_client.describe_backup_vault(
BackupVaultName='cofre-backup-central'
)
print(f"Espaço utilizado: {storage_usage['EncryptionKeyArn']}")
Além disso, use AWS Backup Audit Manager para validar conformidade com políticas corporativas e regulatórias. Configure relatórios automáticos que mostrem RPO/RTO alcançados versus planejados.
Conclusão
Três pontos críticos para dominar AWS Backup: Primeiro, defina RPO e RTO antes de qualquer configuração — essas métricas devem guiar sua estratégia de retenção e frequência. Segundo, automatize tudo através de políticas centralizadas, eliminando manual work e inconsistências. Terceiro, teste continuamente suas recuperações — um backup que nunca foi testado é apenas um arquivo que ocupa espaço. Combine AWS Backup com multi-região replication e você terá uma estratégia de DR verdadeiramente robusta.