Blog de Amazon Web Services (AWS)
Cree, empaquete y publique funciones Lambda en .NET de C# con AWS CDK
Descripción general de la arquitectura
En esta publicación, te mostraremos cómo configurar una arquitectura serverless básica mediante AWS CDK. Esta arquitectura creará una API REST mediante Amazon API Gateway, la integración de proxy de Lambda y la API web de ASP.NET en Lambda. La API web de ASP.NET es un framework para crear APIs web sobre .NET, donde puedes alojar y ejecutar tus funciones Lambda. Esta implementación de AWS CDK creará tres funciones Lambda con una arquitectura similar, escritas en .NET y gestionadas como proyectos independientes de API web de ASP.NET. Según la URL solicitada, el API Gateway dirigirá el tráfico a la función Lambda específica.
Paso a paso del código
Prerrequisitos
- Visual Studio Code (o su IDE preferido)
- Cuenta de AWS
- SDK de .NET 6
- AWS Cloud Development Kit (CDK)
- Git
- Docker
Para permitir que la aplicación AWS CDK compile y despliegue una función Lambda escrita en .NET, primero debes crear un objeto a partir de la clase BundlingOptions. El constructor Lambda utilizará este objeto para compilar y generar los archivos binarios a partir del código fuente de las funciones de Lambda en .NET durante el tiempo de síntetización del proyecto AWS CDK.
El siguiente ejemplo muestra cómo se puede definir la clase BundlingOptions para la función Lambda en .NET. Estas son las propiedades relevantes que tendrás que definir:
- Imagen: debe recibir una imagen de contenedor (container image) de AWS que corresponda al entorno de ejecución de la funcion Lambda.
- Usuario: establece el permiso de ejecución a “root” para crear y generar el archivo binario de salida.
- outputType: define cómo el CDK debe esperar el paquete. Para esta demo, se define como archivo ZIP.
- Comando: está esperando las instrucciones de compilación y empaquetado. En el siguiente fragmento de código de ejemplo, puedes ver cómo está implementado con la utilidadLambda.Tools – para la ayuda con los comandos .NET para empaquetar funciones Lambda.
Con esta definición del objeto BundlingOption, el AWS CDK gestionará el proceso de despliegue de un proyecto de una funcion Lambda .NET. El siguiente código es un ejemplo de cómo enviar esta definición de objeto BundlingOption para crear la función en AWS CDK:
Despliegue y Demo
El repositorio de GitHub «aws-samples/aws-cdk-build-package-publish-dotnet-lambda-function» proporciona la demo completa, para que puedas desplegarla y realizar peticiones a tres APIs de ejemplo para ver la implementación.
Despliegue
Siga los pasos que se indican a continuación para desplegar y probar las funciones Lambda .NET:
- Clonar el repositorio de GitHub
2. Abrir una sesión en un terminal y navegar a la carpeta infra dentro del código fuente del proyecto
3. Na pasta Infra, digite CDK deploy usando seu perfil de conta da AWS
Demo
Cuando finalice el despliegue, copie el Endpoint de la salida del terminal. El formato debe ser similar a: https://xxxyyyzzz .execute-api.us-east-1.amazonaws.com/prod/. Utilice este endpoint en su cliente de API REST favorito para realizar la solicitud. Esta demo utiliza Thunder Client. O puedes pegar la URL en la barra de direcciones del navegador y recibir los mensajes de esa manera. El siguiente ejemplo muestra una Petición y una Respuesta HTTP:
O puedes usar CURL para realizar la peticion HTTP, como se muestra en el siguiente ejemplo:
Para probar la otra función Lambda, cambie la URL añadiendo /functiontwo o/ functionthree al final de la URL original. Por ejemplo, utilice https://xxxyyyzzz .execute-api.us-east-1.amazonaws.com/prod/functiontwo y realice una petición.
O puedes usar CURL para realizar la petición HTTP, como se muestra en el siguiente ejemplo:
Limpiando
Siga uno de estos dos métodos para eliminar el despliegue:
- Dentro de la consola de administración de AWS vaya a la sección de CloudFormation stacks y elimine el stack: InfraStack
- Desde línea de comandos, escriba CDK destroy en el mismo directorio desde el que realizó el despliegue.
Conclusión
En esta publicacion, ha aprendido cómo optimizar la creación, el empaquetado y la publicación de funciones de Lambda con .NET mediante AWS CDK. También puedes aplicar pasos similares a otros entornos de ejecución Lambda que requirien compilación de código, como Java o Go. Este enfoque simplifica el proceso al gestionar la compilación del código de la función Lambda .NET y aprovisionar la infraestructura, lo que te permite crear e implementar funciones Lambda sin pasos de compilación adicionales ajenos al proceso de implementación de AWS CDK.
Este artículo fue traducido del Blog da AWS en Inglés.
Acerca del autor
Ulili Nhaga es arquitecto de aplicaciones en la nube en Amazon Web Services en San Diego, California. Ayuda a los clientes a migrar, modernizar, diseñar y crear aplicaciones nativas en la nube altamente escalables en AWS. Fuera del trabajo, a Ulili le encanta jugar al fútbol, correr, andar en bicicleta, hacer barbacoas brasileñas y disfrutar del tiempo en la playa.