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.
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:
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 ~]#
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,