Las funciones Lambda son uno de los servicios ofrecidos por Amazon Web Services. Se trata de funciones que permiten ejecutar código sin necesidad de administrar servidor; son serverless.

Estas funciones pueden crearse de distintas formas como por ejemplo desde la consola de Administración de Amazon o haciendo el despliegue del código mediante un despliegue en un .zip. Además, admiten distintos lenguajes para desarrollarlas como: Java, Python, NET Core, Node.js o Ruby.

En este artículo voy a explicar cómo podemos crear una función Lambda usando NET Core. Para ello me voy a crear una aplicación que será mi función Lambda y se encargará de sumar dos números.

Empezaremos creándonos una carpeta en nuestro Explorador de Archivos. En esta carpeta será donde se guarden los ficheros para el proyecto.

Captura de pantalla (1295)

Para este ejemplo he llamado a la carpeta lambda:

Captura de pantalla (1296)

Crearemos nuestro proyecto para la función Lambda por medio de comandos por lo que abrimos nuestro cmd y nos navegamos a la ruta de la carpeta que se acabe de crear.

El primer paso será instalar las plantillas de Lambda. Para ello introducimos el siguiente comando:

dotnet new -i Amazon.Lambda.Templates

Captura de pantalla (1297)

Si todo ha ido correctamente veremos que nos ha instalado las plantillas:

Captura de pantalla (1298)

A continuación, con el siguiente comando, se creará un proyecto NET Core nuevo con la plantilla Lambda Empty Function. Además de esto, en este comando se le indicará: el nombre de la función, el profile y la región en la que se alojará.

dotnet new lambda.EmptyFunction –name MyLambdaFunction –profile default –region us-east-1

Captura de pantalla (1300)

Por último, de momento, solo quedaría instalar las herramientas Lambda Tools. Estas herramientas servirán para decir cómo queremos implementar la función posteriormente.

dotnet tool install -g Amazon.Lambda.Tools

Captura de pantalla (1303)

Una vez hayamos hecho esto, nuestro proyecto se habrá creado y estará listo para trabajar con él. Si nos dirigimos a la carpeta lambda en el Explorador de Archivos veremos que dentro de ella se encuentra otra carpeta llamada MyLambdaFunction. Dentro de esta carpeta hay otras dos:

Captura de pantalla (1304)

La carpeta test contiene ficheros para hacer pruebas sobre la función Lambda. La carpeta que nos interesa es src. La abrimos y buscamos el fichero .csproj y lo abrimos con Visual Studio para poder trabajar con él.

Captura de pantalla (1372)

Como vemos este fichero nos ha creado dos ficheros importantes. El primero es el llamado «Function.cs»

Captura de pantalla (1307)

Este fichero es una clase que trae el Handler de la función. Le llegan dos parámetros; el primero es el input que se trata de los datos que va a recibir la función. El segundo parámetro es el contexto, con esto podemos recibir información sobre al función como por ejemplo su nombre o su versión entre otras cosas.

En este caso, el Handler pone el input recibido en mayúsculas.

El segundo fichero se trata de aws-lambda-tools-defaults.json y contiene una serie de detalles sobre la función como por ejemplo la región en la que se encuentra la cual le indicamos anteriormente:

Captura de pantalla (1308)

A este proyecto también se le pueden añadir otros ficheros como otras clase de C# y para este ejemplo, crearé una clase Operación que contendrá dos propiedades numéricas que luego sumaré en el método Handler.

Captura de pantalla (1311)

Nota: importante recordar poner la clase como pública ya que no lo hace automáticamente.

Ahora nos dirigimos al fichero Function.cs y cambiamos el input de String a un objeto de la clase Operación para así poder recibir los dos números a sumar:

Captura de pantalla (1313)

Borramos el código que viene por defecto dentro del método y lo sustituimos por la operación que sumará los números que llegarán en el objeto operación y devolvemos el resultado:

Captura de pantalla (1314)

En caso de querer trabajar con CloudWatch se usará la clase LambdaLogger y con su método Log() podemos indicarle un mensaje que se mostrará en los registros. Lambda usa CloudWatch para poder ver los eventos que se hacen en la función.

Captura de pantalla (1315)

En este caso le he pasado como mensaje el nombre de la función utilizando el contexto y la fecha actual en la que se está ejecutando la función.

Una vez tengamos este código, antes de continuar, debemos abrir la consola de administración de Amazon y crearnos un rol así como un usuario en IAM. Esto será para posteriormente poder realizar el deploy de la función.

Empezaremos creando el usuario. Nos dirigimos a la sección de IAM de la consola y en Usuarios creamos un nuevo usuario.

Captura de pantalla (1316)

Tenemos que darle permisos al usuario sobre Lambda. Podemos darle permisos únicamente para que haga el deploy o permisos Full Access.

Captura de pantalla (1318) Captura de pantalla (1317)

Una vez esté creado el usuario, hay que recordar de descargar el fichero .csv con sus claves.

Captura de pantalla (1320)

Ahora vamos a crear el rol. Este deberá de tener permisos Full Access sobre Lambda.

Captura de pantalla (1322) Captura de pantalla (1323) Captura de pantalla (1324)

Una vez tengamos tanto el usuario como el rol creado, volvemos a nuestro proyecto de Visual Studio y le indicamos el rol recién creado en el fichero .json. Esto se hace usando el nombre que le hemos dado al rol:

Captura de pantalla (1325)

Opcionalmente, si quisiéramos cambiarle el nombre al fichero Function.cs se haría de la siguiente manera; primero, renombramos el fichero .cs con el nombre que queramos darle. En mi caso, SumaFunction.cs.

Captura de pantalla (1326)

Y también he de modificar en el fichero .json la propiedad: “function-handler”

Captura de pantalla (1327)

Una vez tengamos nuestro proyecto creado es el momento de hacer el deploy de la función. Para ello primero debemos validarnos con el usuario que acabamos de crear. Por tanto, abrimos el cmd y escribimos el comando: aws configure

Captura de pantalla (1328)

Introducido esto nos pedirá el Access Key y el Secret Access Key que vienen en el fichero .csv que hemos descargado cuando creamos el usuario. Dejamos el resto de los datos que nos pedirá por defecto.

Una vez estemos logeados como nuestro usuario tenemos que dirigirnos a la ruta en la que se encuentre nuestro fichero .csproj e introducimos el siguiente comando:

dotnet lambda deploy-function MyLambdaFunction

Captura de pantalla (1331)

Una vez nos haya dicho esto, podremos dirigirnos a nuestro portal y ver que nos ha creado la función:

Captura de pantalla (1333)

Para poder probar si es funcional, pulsamos sobre ella y cuando nos lleve a sus detalles pulsaremos sobre Probar.

Captura de pantalla (1334)

Una vez en el área Probar nos pedirá que insertemos los valores que recibirá la función. Las propiedades eran de tipo int por tanto le deberemos de pasar dos números. También deberemos de darle un nombre al evento.

Captura de pantalla (1335)

SI pulsamos sobre Guardar los cambios y posteriormente sobre Probar nos saldrá que todo se ha ejecutado correctamente podremos ver el resultado de la suma.

Captura de pantalla (1336)

Y en el apartado Resultado de registro podemos ver el mensaje que se le ha enviado mediante el método Log() de LambdaLogger.

Captura de pantalla (1337)

Y de esta forma hemos creado nuestra función Lambda con una aplicación NET Core.

Autora: Aurora Moreno López

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2020-2021

Enlace a GitHub: https://github.com/auroraMoreno/MyLambdaFunction.git

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.