Ícone do site Paulo Sant´anna

AWS Lambda: automatize o início e a parada de instâncias EC2

Olá pessoal,

Seguindo com os posts sobre AWS, hoje vamos falar um pouco sobre automação.

O AWS Lambda é um serviço de computação sem servidor que permite executar código sem provisionar ou administrar a infraestrutura responsável pela execução. A AWS gerencia esse ambiente, enquanto o profissional de TI concentra o trabalho na lógica da aplicação ou da automação.

As possibilidades são infinitas e, como exemplo, eu trouxe neste post uma aplicação prática e bem simples que é a automatização do início e a parada de instâncias EC2 na AWS. Essa abordagem pode ser útil para ambientes de desenvolvimento, testes e outras cargas que possuem horários definidos de utilização.

Como funciona a automação com AWS Lambda

A solução combina funções em Python com o Boto3, SDK da AWS para essa linguagem. O código informa a região e os identificadores das instâncias, enviando uma solicitação para iniciá-las ou pará-las.

O exemplo abaixo foi adaptado de uma automação que desenvolvi, com os dados do ambiente substituídos por valores ilustrativos.

Função para iniciar instâncias:

import boto3
REGION = "us-east-1"
INSTANCE_IDS = ["i-0123456789abcdef0"] # ID fictício
ec2 = boto3.client("ec2", region_name=REGION)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=INSTANCE_IDS)
print("Solicitação de início enviada.")

Função para parar instâncias:

import boto3
REGION = "us-east-1"
INSTANCE_IDS = ["i-0123456789abcdef0"] # ID fictício
ec2 = boto3.client("ec2", region_name=REGION)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=INSTANCE_IDS)
print("Solicitação de parada enviada.")

Cada trecho deve ser cadastrado em uma função Lambda separada. Antes de utilizar, substitua a região e o identificador pelos recursos que deseja administrar. As chamadas solicitam a mudança de estado; a inicialização ou parada pode levar alguns minutos.

Execução em horários programados

O Amazon EventBridge Scheduler pode invocar cada função nos horários definidos, permitindo iniciar as instâncias no começo do expediente e pará-las ao final. O agendamento deve considerar o fuso horário desejado. Veja a documentação oficial de integração com Lambda.

A função precisa de uma função de execução do AWS Identity and Access Management (IAM) com a permissão correspondente: ec2:StartInstances ou ec2:StopInstances, restrita às instâncias administradas. O agendador também precisa de autorização para invocar a função Lambda.

Cuidados antes de automatizar

Confirme se as aplicações podem ser interrompidas e se as instâncias utilizam volumes raiz Amazon EBS, compatíveis com parada e reinício. Parar uma instância não significa excluí-la, mas os dados armazenados em volumes instance store são perdidos durante a parada.

Com essas condições verificadas, o exemplo demonstra como poucas linhas de código podem transformar uma tarefa recorrente de infraestrutura em uma automação.

Até a próxima!

Sair da versão mobile