Llamar una función Lambda de AWS con parámetros

Lambda es el servicio de Amazon AWS para crear aplicaciones sin servidores. Es decir, subimos el código fuente y AWS se encarga de ejecutarlo sin que nosotros conozcamos la arquitectura hardware que hay detrás.

Con Lambda podemos crear aplicaciones en diferentes lenguajes o, sencillamente, un función que invoque a una api de Amazon. Por ejemplo, ejecutar un snapshot sobre un volumen EBS.

A estas funciones, si lo deseamos, las podemos programar para que se ejecuten periódicamente desde CloudWatch, pero este artículo trata de cómo crear una función Lambda a la que le pasaremos un parámetro.

En el siguiente ejemplo, crearemos una función, cuyo parámetro será el identificador del volumen EBS del que queremos realizar un snapshot. Utilizaremos el siguiente código en Python para crear dicha función:

import boto3

   ec = boto3.client(‘ec2′, region_name=’eu-west-1’)

   def lambda_handler(event, context):
   ec.create_snapshot( VolumeId=event[‘volid‘],         Description=event[‘description‘],)

volid: Es el ID del volumen del que queremos hacer el snapshot y se lo pasaremos como parámetro a la función.

Description: Es un parámetro que utilizaremos para añadir una descripción al snapshot.

Lambda Create snapshot parameters

Una vez creada la función, la podemos probar desde el mismo entorno de prueba, haciendo click en el botón «prueba», donde indicaremos los valores de los parámetros que le pasamos a la función:

Lambda Test parameters

Si queremos ejecutar la función desde la línea de comandos con AWS Cli, podemos pasar los parámetros de dos maneras:

  • Con un fichero de texto que contiene los parámetros:

[root@prt53ws1 ~]# aws lambda invoke –region eu-west-1 –function-name CreateSnapshot –payload file://input.txt output.txt
{
«StatusCode»: 200
}
[root@prt53ws1 ~]# cat input.txt  Este es el fichero de parámetros
{
«volid«: «vol-07b239bfcde6aae69»,
«description«: «aws snapshot test»
}

  • Pasamos todos los parámetros en una única línea:

[root@prt53ws1 ~]# aws lambda invoke –region eu-west-1 –function-name CreateSnapshot –payload ‘{«volid«:»vol-07b239bfcde6aae69», «description«:»aws snapshot test»}’ output.txt
{
«StatusCode»: 200
}
[root@prt53ws1 ~]#

COMPÁRTEME

Deja un comentario