Aprenda a Reiniciar sua instância EC2 com Agendamento Automático

Search for a command to run...

Compartilho com você meus estudos e o que aprendi na AWS através de artigos, tutoriais, cases e dicas. Confira!
INTRODUÇÃO Recentemente recebi um projeto para reiniciar uma instância Lightsail todos os dias em um horário específico automaticamente. Essa instância Lightsail era uma pilha otimizada de WordPress de um site que recebia um alto tráfego de visitas, ...
Introdução Você pode ter diversos motivos diferentes para querer reiniciar automaticamente um droplet no Digital Ocean, se você estiver procurando por alguma opção no console, observará algo parecido com essa imagem: Há apenas duas opções disponívei...

Introdução Você pode ter diversos motivos e casos de uso diferentes para querer iniciar e parar de forma agendada e automática o AWS Fargate, no meu caso específico eu precisava de um Fargate para um ambiente de QA que não tinha a necessidade de esta...

Introdução Você pode ter vários motivos e razões diferentes para querer agendar um start e stop automático para o RDS. No meu caso eu estava criando um ambiente de QA onde não precisava que o RDS ficasse ligado o tempo todo para manter os custos redu...

Introdução Você pode ter vários motivos e razões diferentes para querer agendar um start e stop automático para suas instâncias EC2. No meu caso eu estava criando um ambiente de QA onde não precisava que o EC2 ficasse ligado o tempo todo para manter ...

Introdução Você pode ter diversas razões e motivos para querer configurar uma instância NAT na AWS, para meu caso de uso estava precisando criar um novo ambiente de QA, este ambiente consistia em ter uma função Lambda que fosse capaz de ter uma conex...

Recentemente recebi um projeto para reiniciar uma instância EC2 todos os dias em um horário específico automaticamente. Havia uma premissa de não ter a necessidade de acesso ssh para configurações de scripts e crontab para minimizar um possível erro ou esquecimento no futuro.
Então aqui está o passo a passo que fiz para atingir esse objetivo, vamos lá!
1- Acesse o IAM → Policy → alterne para a aba JSON

Defina o nome como “ec2_reboot_instances_policy” → altere no bloco “Resource” para os IDs das instâncias reais para seu cenário
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:RebootInstances",
"ec2:TerminateInstances",
"ec2:StopInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxx",
"arn:aws:ec2:us-east-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxx"
]
}
]
}
2- Acesse o IAM → Role → selecione AWS Service → em Use cases for other AWS services → selecione CloudWatch Events

Defina o nome como “ec2_reboot_instances_role” → adicione a política criada no passo anterior → clique na aba Trust Relationships

Verifique se está igual o código abaixo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
1- Acesse o CloudWatch → Events → Rules

2- Clique em Create Rule

3- Defina o nome da regra como “EC2_instance_reboot” por exemplo → alterne para Schedule → clique em Continue to create rule

4- Defina sua expressão cron como por exemplo 0 7 * * ? * (isso irá definir o cron para todos os dias as 7 horas UTC ou 4 horas em Brasília)
50 16 ? MON-FRI * e isso iria funcionar de segunda a sexta as 16 horas e 50 minutos UTC (ou 13 horas e 50 minutos horário de Brasília)
5- Selecione em Target a opção EC2 RebootInstances API Call → insira o ID da instância EC2 que deseja reiniciar → escolha Use execution role criada no primeiro passo

6- Repita o passo anterior para mais instâncias que precisar clicando no botão Add Another Target
Criamos uma solução para reiniciar automaticamente instâncias EC2 sem a necessidade de acessar ssh ou fazer qualquer configuração dentro da instância, minimizando qualquer problema, desta forma nosso CloudWatch Events possui um agendamento, e então no momento definido invocará a API necessária para reiniciar a instância EC2. Além disso essa é uma solução barata.