<h2>Fundamentos do AWS Backup</h2>
<p>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 <em>o quê</em>, <em>quando</em> e <em>por quanto tempo</em> fazer backup automaticamente, eliminando a necessidade de scripts manuais e reduzindo significativamente o risco de perda de dados.</p>
<p>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.</p>
<h2>Configuração de Políticas Centralizadas</h2>
<h3>Criando um Plano de Backup</h3>
<p>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:</p>
<pre><code class="language-python">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']}")</code></pre>
<h3>Atribuindo Recursos ao Plano</h3>
<p>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:</p>
<pre><code class="language-python"># 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")</code></pre>
<h2>Recuperação de Desastres Avançada</h2>
<h3>Restauração Granular e em Larga Escala</h3>
<p>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:</p>
<pre><code class="language-python"># 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'
}
]
}
]
}
)</code></pre>
<h3>Testando Recuperação</h3>
<p>Nunca assuma que seus backups funcionam — teste regularmente. Crie um pipeline de testes automatizados que restaura recursos em ambiente de staging:</p>
<pre><code class="language-python"># 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']}")</code></pre>
<h2>Monitoramento e Otimização</h2>
<p>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:</p>
<pre><code class="language-python">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']}")</code></pre>
<p>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.</p>
<h2>Conclusão</h2>
<p>Três pontos críticos para dominar AWS Backup: Primeiro, <strong>defina RPO e RTO antes de qualquer configuração</strong> — essas métricas devem guiar sua estratégia de retenção e frequência. Segundo, <strong>automatize tudo através de políticas centralizadas</strong>, eliminando manual work e inconsistências. Terceiro, <strong>teste continuamente suas recuperações</strong> — 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.</p>
<h2>Referências</h2>
<ul>
<li><a href="https://docs.aws.amazon.com/aws-backup/" target="_blank" rel="noopener noreferrer">AWS Backup Official Documentation</a></li>
<li><a href="https://docs.aws.amazon.com/aws-backup/latest/devguide/best-practices.html" target="_blank" rel="noopener noreferrer">AWS Backup Best Practices Guide</a></li>
<li><a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/backup.html" target="_blank" rel="noopener noreferrer">Boto3 AWS Backup Client Reference</a></li>
<li><a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html" target="_blank" rel="noopener noreferrer">AWS Well-Architected Framework - Reliability Pillar</a></li>
<li><a href="https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/" target="_blank" rel="noopener noreferrer">Disaster Recovery of Workloads on AWS - White Paper</a></li>
</ul>