AWS – Stop agendado de instâncias EC2

Objetivo:

Configurar o stop agendado de instâncias EC2 usando Lambda em Python e EventBridge.

Navegação

I) Criar função lambda que interrompe instâncias EC2

Na console lambda → Functions → Create function

Author from scratch → Entre com nome da função → Python 3.x → Create function

Faça a edição da Policy na Role criada para a função lambda.

Na função criada → Configuration → Permissions → Selecionar a Role

Na console do IAM faça a edição da Policy.

Expanda a Policy → Edit

Entre com o seguinte JSON para a Policy e clique em Review Policy.

JSON → Inserir o código da permissão → Review policy

ATENÇÃO: Não esquecer de adicionar a vírgula.

				
					{
  "Effect": "Allow",
  "Action": [
    "ec2:DescribeInstances",
    "ec2:DescribeRegions",
    "ec2:StartInstances",
    "ec2:StopInstances"
  ],
  "Resource": "*"
}

				
			

Save changes.

Substitua o código da função pelo exemplo a seguir. No código devem ser ajustadas a região e os IDs das instâncias EC2 que devem se paradas.

Na console Lambda → Code → Substitua o código

				
					import boto3

region = 'us-east-1'
instances = ['i-06c43fa038ae09b45', 'i-014e60f5ec6ff8de5', 'i-01853a2ce9b6185f5']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.stop_instances(InstanceIds=instances)
    print('Instancias interrompidas: ' + str(instances))

				
			

Mude o timeout da função para 2 minutos.

Em Configuration → General configuration → Edit

Time out = 2 min. → Save

Inicie as instâncias EC2 e faça um teste executando a função lambda.

Na função lambda → Test → Test

Verifique a execução em logs. Verifique que as instâncias foram stopadas.

II) Agendamento da função lambda

Para agendar o stop das instâncias entre na console do EventBridge e clique em Create rule.

Entre com nome → Schedule → Next

Selecione o scheduler pattern → Horário de parada → Local time zone → Next

AWS Service → Lambda Function → Seleciona a função → Next

Next

Create rule

Aguarde o horário agendado e verifique o stop das instâncias.

It’s done!

Bruno Veiga

Bruno Veiga

Arquiteto Cloud e Arquiteto de Soluções. Me dedicando em compartilhar conhecimento e ajudar empresas a encontrar as melhores soluções tecnológicas para os problemas do negócio com agilidade, segurança, equipes alinhadas e dentro do orçamento.