
INTRODUÇÃO
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á!
ETAPA 1 - Permissões
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"
}
]
}
ETAPA 2 - CloudWatch Events
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
CONCLUSÃO
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.
AWS
Compartilho com você meus estudos e o que aprendi na AWS através de artigos, tutoriais, cases e dicas. Confira!






