Olá, pessoal!
No Veeam Backup for AWS, para fazer o restore de arquivos ou pastas para o local de origem de uma instância EC2 é necessário executar alguns passos adicionais. Isso é necessário porque durante o restore o Veeam Backup for AWS utiliza o System Manager e o Kinesis da AWS para enviar os arquivos para a instância original. Nesse artigo irei demonstrar como configurar e executar esse tipo de restore.
Pré-Requisitos
Vamos começar com alguns pré-requisitos necessários para o processo.
- A porta 443 precisa estar aberta no Security Group do Worker para que seja possível acessar a página para procurar os arquivos/pastas que serão restauradas;
- [Para instâncias EC2 baseadas em Linux] O Python v2 ou v3 com o módulo 6 deve estar instalado na instância de origem;
-
Se a instância EC2 de origem operar em uma rede privada, você deve criar os seguintes endpoints VPC para a subnet à qual a instância está conectada:
- com.amazonaws.<region>.ec2messages
- com.amazonaws.<region>.ssm
- com.amazonaws.<region>.sqs
- com.amazonaws.<region>.kinesis-streams
- com.amazonaws.<region>.sts
- Para instâncias EC2 que executam o sistema operacional Linux, a restauração de arquivos e pastas para a localização original é suportada apenas para distribuições baseadas em systemd;
- Para instâncias EC2 que executam o sistema operacional Windows, a restauração de arquivos e pastas para a localização original é suportada apenas se o Windows Management Framework (WMF) versão 5.1 estiver instalado nas instâncias processadas.
Criando a IAM Policy
Primeiro vamos criar uma IAM Policy com as permissões necessárias para o processo:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:GetQueueUrl",
"kinesis:List*",
"kinesis:Describe*",
"kinesis:Get*",
"sqs:GetQueueAttributes",
"sqs:ListDeadLetterSourceQueues"
],
"Resource": [
"*"
]
}
]
}
Criando a IAM Role
Agora vamos criar a IAM Role com a policy que criamos anteriormente.
Escolha o tipo “AWS service” e “EC2”.
Além dessa policy, vamos também adicionar a policy padrão da AWS “AmazonSSMManagedInstanceCore“. Essa política é necessária para registrar a instância no AWS System Manager caso ela já não esteja.
O resultado será como o exemplo abaixo:
O “Trusted relationships” da role deve ser como o exemplo abaixo:
Adicionando a IAM Role a instância
Agora que temos a role criada precisamos adicioná-la a instância que desejamos restaurar arquivos.
Vá até a opção “Secuirty” e “Modify IAM role”:
Escolha a IAM Role que foi criada.
Aguarde alguns minutos e verifique se a instância já está sendo exibida no Inventory do AWS System Manager.
Executando o restore de arquivos
Agora já podemos iniciar o restore de arquivos para a instância no Veeam Backup for AWS.
Vamos até “Protect Data”, “Restore”, selecione a instância e escolha a opção “File-level Recovery”.
Escolha um restore point.
Para restaurar os arquivos para o local de origem é necessário habilitar a opção “Additional restore mode”.
Quando habilitamos essa opção o Veeam Backup for AWS tentará contatar a instância via SSM, se tudo ocorrer conforme esperando a opção será habilitada.
Caso receba qualquer erro nesse passo, verifique se a instância está registrada no AWS System Manager.
Como dito anteriormente, o Veeam Backup for AWS usa o Kinesis Data Stream para restaurar os arquivos. O Kinesis é cobrando por shard utilizado durante o processo. Por padrão, o Veeam Backup for AWS usa apenas 1 shard com uma taxa de transferência de 1MB/s. É possível ajustar isso na seção de “restore rate” e assim atingir uma velocidade maior de restore, entretanto, o custo por uso do shard irá aumentar.
É possível também habilitar a opção “Keep the restore tool at the target instance”, dessa forma o executável que utilizamos durante o restore continuará instalado na instância e caso seja necessário restaurar novamente arquivos para essa instância o processo iniciará mais rápido.
Aguarde o Worker iniciar e gerar o endereço para acesso a página de restore.
Quando o endereço estiver pronto poderemos acessar a página, navegar e escolher os arquivos que desejamos restaurar.
Ao selecionar os arquivos devemos adicionar a lista de restore e selecionar se vamos manter os arquivos originais ou sobrescrevê-los. Nesse exemplo irei manter os arquivos originais.
Ao iniciar o restore podemos acompanhar em “Session Log” os arquivos que foram restaurados e se tivemos alguma falha.
Ao acessar a instância veremos que uma nova pasta foi criada com os arquivos restaurados porque escolhi a opção “Keep”.
Restaurando arquivos em um ambiente Cross-Account
Se você usa um ambiente Cross-Account, ou seja, o Veeam Backup for AWS está localizado em uma conta diferente do que a instância que está sendo restaurada está localizada, é necessário adicionar uma permissão adicional na IAM Policy criado nos passos anteriores.
É necessário adicionar a permissão abaixo:
{
"Sid": "AssumeRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<account_id_vbaws_is_located>:role/veeam_rto_*"
}
Isso é necessário porque, durante o restore, é criado uma IAM Role temporária na conta onde o Veeam Backup for AWS está localizado para fazer a transferência dos dados via Kinesis Data Stream e a IAM Role da conta onde está localizado a instância precisa de permissão para assumir essa IAM Role temporária.
No exemplo abaixo estou utilizando o nome “veeam_rto_*” porque o nome completo da IAM Role temporária é sempre criado com o ID da instância que está sendo restaurado, então utilizando o asterisco não será necessário alterar essa IAM Role cada vez que for executar o restore de diferentes instâncias.
No final, a IAM Policy ficará como o exemplo abaixo:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:GetQueueUrl",
"kinesis:List*",
"kinesis:Describe*",
"kinesis:Get*",
"sqs:GetQueueAttributes",
"sqs:ListDeadLetterSourceQueues"
],
"Resource": [
"*"
]
},
{
"Sid": "AssumeRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::886738527459:role/veeam_rto_*"
}
]
}
Todos os outros passos para restaurar os arquivos para o local de origem são os mesmos.
Segue abaixo alguns links com maiores detalhes sobre o processo.