Creación de una función Lambda con NET Core
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.
Para este ejemplo he llamado a la carpeta lambda:
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
Si todo ha ido correctamente veremos que nos ha instalado las plantillas:
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
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
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:
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.
Como vemos este fichero nos ha creado dos ficheros importantes. El primero es el llamado «Function.cs»
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:
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.
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:
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:
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.
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.
Tenemos que darle permisos al usuario sobre Lambda. Podemos darle permisos únicamente para que haga el deploy o permisos Full Access.
Una vez esté creado el usuario, hay que recordar de descargar el fichero .csv con sus claves.
Ahora vamos a crear el rol. Este deberá de tener permisos Full Access sobre Lambda.
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:
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.
Y también he de modificar en el fichero .json la propiedad: “function-handler”
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
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
Una vez nos haya dicho esto, podremos dirigirnos a nuestro portal y ver que nos ha creado la función:
Para poder probar si es funcional, pulsamos sobre ella y cuando nos lleve a sus detalles pulsaremos sobre Probar.
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.
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.
Y en el apartado Resultado de registro podemos ver el mensaje que se le ha enviado mediante el método Log() de LambdaLogger.
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