Start/Stop automático de instancias EC2 con Lambda en AWS

Start/Stop automático de instancias EC2 con Lambda en AWS

Amazon Lambda tiene muchas opciones casi predefinidas, por ejemplo podemos crear a partir de una “Blanck Function” un sistema de Start o Stop de instancias EC2. Muchas veces tenemos necesidades de computación que pueden tener un scheduler, por ejemplo: sistema de BigData que necesiten una computación muy elevada, instancias que cubran aplicaciones internas que solo se usan de día, etc… pues bien, podemos hacer que dichas se pongan en marcha automáticamente y que también se detengan en horas concretas.

AWS Lambda Functions

Para poder crear, por ejemplo, una instancia que se detenga (sería lo mismo para el Start, solo hay que cambiar allá donde ponga Stop por un Start) en una hora concreta realizaremos los siguientes pasos:

Crearemos una a Blank Function en Lambda, sin más daremos a “Next” ya que no utilizaremos triggers en esta primera etapa. Como vemos en la imagen, tras las primeras pantallas, llegamos a la configuración de la función, será tan simple como introducir dicho código e indicando allá donde aparecen las “XXXX” de InstanceIds el número de instancia con la que queremos interactuar.

AWS Lambda Functions

var AWS = require('aws-sdk');
exports.handler = function(event, context) {
    var ec2 = new AWS.EC2({region: 'eu-west-1'});
    ec2.stopInstances({InstanceIds : ['XXXXXX']},function (err, data){
        if (err) console.log(err, err.stack);
        else console.log(data);
        context.done(err,data);
    });
};

Una vez esté creada, entonces podemos mirar de introducir un Trigger de CloudWatch que nos permitirá, por ejemplo, ponerle un cron. Podremos localizar algunos ejemplos cuando estemos configurando las opciones de Triggers de CloudWatch pero, desde el mismo CloudWatch podemos crear nuevos eventos muy fácilmente.

Autor: Joakim Vivas

comments powered by Disqus