AWS — Ligando e Desligando uma Instancia EC2 em horários determinados

Aprenda a automatizar o ligamento e desligamento de instâncias AWS EC2 utilizando funções Lambda

AWS — Ligando e Desligando uma Instancia EC2 em horários determinados

Ola Meninos e Meninas!

Hoje iremos aprender algo muito útil!

Tenho uma instancia que precisa executar rotinas todos os dias das 01:00 até as 04:00, ou seja, não preciso da instancia ligada o dia todo.

Para fazer isto de forma automática iremos utilizar duas funções LAMBDA.

Neste exemplo temos as seguintes condições:

Instancia: brpaloma1
Ligar: 01:00 (No GMT -2 ) / Todos os dias
Desligar: 04:00 (No GMT -2 ) / Todos os dias

Os scripts utilizados neste tutorial estão disponíveis em meu Git:

https://github.com/cmacetko/aws_start_stop

Vamos começar criando a função que ira PARAR a instancia.

  1. Acesse https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions
  2. Clique em “Create Function
  3. Em “Name” preencha o nome da função (Para nosso teste, irei chamar de “brpaloma1_teste_stop”)
  4. Em “Runtime” selecione “Python 2.7
  5. Em “Role” selecione “Create a custom role

Agora foi aberto uma janela para criar a ROLE que ira permitir a função LAMBDA ter acesso as instancias.

  1. Preencha o “Role Name” com o nome da Role (Para nosso teste, irei chamar de “brpaloma1_role”)
  2. Clique em “View Policy Document
  3. Clique em “Edit
  4. Clique em “OK” na mensagem que for aberta
  5. No campo de texto preencha com as regras conforme abaixo:

6. Clique em “Allow

Automáticamente ira voltar a janela de criação da função.

Selecione a Role recem criada e após clique em “Create Function”:

Checamos a parte divertida!

Precisamos agora criar o script em Python para desligar a instancia que desejamos, note que neste caso iremos desligar uma instancia especifica:

Bom, já temos a Rule, já temos a função, porem precisamos tornar as chamadas a esta função automáticas!

Então selecione “CloudWatch Events” no box “Designer”:

Abaixo será aberto alguns campos:

  1. Em “Rule” selecione “Create a new rule
  2. Em “Rule name” preencha um nome para este evento (Para nosso teste, irei chamar de “chamada_01hrs”)
  3. Em “Rule type” selecione “Schedule expression
  4. Em “Schedule expression” preencha com “cron(00 3 * * ? *)” (No final irei explicar o porque)
  5. Clique em “Add

Pronto, você deve ter um ambiente semelhante ao ambiente abaixo:

Antes de finalizar iremos testar esta função:

  1. Clique em “Test

2. Em “Event Name” preencha com “Test

3. Clique em “Create

4. Clique em “Test” novamente

5. Se não apresentar problema, deve aparecer “Execution result: succeeded

E por último, NÃO ESQUEÇA, clique em “Save”:

Já temos a função que desliga a instancia pronta, agora vamos para a função de LIGAR a instancia.

  1. Acesse https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions
  2. Clique em “Create Function
  3. Em “Name” preencha o nome da função (Para nosso teste, irei chamar de “brpaloma1_teste_start”)
  4. Em “Runtime” selecione “Python 2.7
  5. Em “Role” selecione “Choose an existing role” (Veja que iremos utilizar a mesmo Role criada anteriormente)
  6. Em “Existing Role” selecione a Role que criamos anteriormente “brpaloma1_role
  7. Clique em “Create Function
  8. No script preencha com o mesmo script, porem trocando STOP para START:

9. Selecione “CloudWatch Events” no box “Designer”:

Abaixo será aberto alguns campos:

  1. Em “Rule” selecione “Create a new rule
  2. Em “Rule name” preencha um nome para este evento (Para nosso teste, irei chamar de “chamada_04hrs”)
  3. Em “Rule type” selecione “Schedule expression
  4. Em “Schedule expression” preencha com “cron(00 6* * ? *)” (No final irei explicar o porque)
  5. Clique em “Add

E por último, Clique em “Save”:

Fácil né! ❤ ❤ ❤

Mas você deve estar se perguntando, de onde veio o “cron(00 3 * * ? *)” e o “cron(00 6 * * ? *)”?

O importante são os dois primeiros parâmetros, o primeiro indica o MINUTO e o segundo a HORA:

Porem a função trabalha em UTC,e nós, no Brasil, utilizamos o UTC -3 (e agora no horário de versão UTC -2).

Então, temos de somar 2 horas na hora que queremos.

Se queremos que o cron seja chamado as 20 horas, então configuramos para 22 horas.

É isto Gente! ❤ ❤ ❤


Ei pessoal, temos um novo tutorial com um intuito semelhante:

AWS — Ligando e Desligando uma Instância EC2 através do API Gateway
Controlando o inicio e desligamento de uma instância EC2 através de um API criada no serviço API Gateway ligado a uma…

Por hoje é isto, queridos desenvolvedores! 👩‍💼

Até logo! 👋