AWS Admin

AWS Backup: Políticas Centralizadas e Recuperação de Desastres: Do Básico ao Avançado Já leu

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

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.

Referências


Artigos relacionados