Módulo 2: Herramientas para el desarrollo de .NET
MÓDULO DE APRENDIZAJE
AWS proporciona varias herramientas para ayudarlo a desarrollar funciones de Lambda para .NET. Todas son gratuitas y se pueden instalar directamente en el IDE de su elección o en la línea de comandos que elija. No es necesario configurar las herramientas si ya tiene una cuenta de AWS configurada en su ordenador.
Las herramientas de .NET para AWS Lambda están disponibles para Visual Studio (solo Windows), Visual Studio Code y Rider. Las herramientas de línea de comandos están disponibles para Windows, Linux y Mac. El nivel de soporte varía entre los IDE y los sistemas operativos. En este módulo se proporciona un resumen de las herramientas disponibles, junto con enlaces a las descargas pertinentes.
Tiempo de realización
60 minutos
Kit de herramientas de AWS para Visual Studio
A partir de mayo de 2022, el Kit de herramientas de AWS para Visual Studio solo está disponible para Windows. Tras la instalación, el kit de herramientas le ayudará a configurarlo para acceder a su cuenta de AWS.
A través de una interfaz de usuario familiar, el kit de herramientas le permite desarrollar, depurar, implementar, actualizar y probar las funciones de Lambda mediante una interfaz gráfica dentro de Visual Studio. El kit de herramientas está disponible para su descarga para Visual Studio 2022, 2019 y 2017.
Instalación
En Visual Studio, vaya al menú Extensión y seleccione Administrar extensiones. A la derecha, en el cuadro de búsqueda, escriba “Kit de herramientas de AWS”. En el panel de resultados, seleccione la extensión “Kit de herramientas de AWS para Visual Studio” y haga clic en Descargar. Siga las instrucciones para instalar la extensión; es posible que deba reiniciar Visual Studio.
Descripción general y características principales
En relación con el servicio Lambda, el kit de herramientas proporciona dos conjuntos clave de características, plantillas de proyecto para las funciones de Lambda y herramientas para ayudar con la implementación, la administración y la prueba/invocación de las funciones de Lambda. Además, el kit de herramientas le permite administrar otros recursos de AWS e implementar aplicaciones en otros tipos de infraestructura de AWS, como AWS Fargate, AWS App Runner y AWS Elastic Beanstalk (no se tratan en este curso).
El kit de herramientas agrega muchas plantillas de proyectos de Lambda para ayudarle a crear diversas funciones de Lambda.
La más simple toma una cadena y devuelve una versión en mayúsculas de esa cadena. Esta es una excelente opción para empezar debido a su simplicidad, facilidad de implementación y facilidad de prueba. En solo unos minutos, puede ejecutar una función de Lambda para .NET en AWS, enviar solicitudes y obtener respuestas.
En la parte más compleja, hay una plantilla que proporciona una aplicación web .NET 6 completa (con páginas web y controladores de API). Cuando se implemente, la infraestructura necesaria para que sea accesible desde la web también se implementará y configurará para usted.
Hay plantillas de proyectos de contenedores disponibles si así lo prefiere. Tenga en cuenta que debe tener Docker instalado en su computadora para que funcionen. Consulte la sección “Cómo elegir la versión ejecutable para usted”, en el módulo 4, para saber por qué puede optar por utilizar imágenes de contenedor con funciones de Lambda.
Las pruebas unitarias de las funciones de Lambda son tan importantes como las pruebas de cualquier otro código. La mayoría de las plantillas de proyectos incluyen un proyecto de prueba que usa xUnit para probar el código del proyecto de código fuente. Esto facilita la iniciación a las pruebas unitarias.
Como puede deducir de lo anterior, desde Visual Studio también puede publicar sus funciones en el servicio AWS Lambda. La funcionalidad de publicación se encarga de crear un paquete, cargarlo en el servicio Lambda, aplicar permisos, crear el punto de conexión de API Gateway y realizar cualquier otro paso necesario para que el código se ejecute y esté disponible para su invocación. Lo único que tiene que hacer es escribir el código.
Otra característica del kit de herramientas es el Explorador de AWS, que le permite ver y administrar muchos de sus recursos de AWS, como DynamoDB, S3, SNS, colas de SQS, EC2 y, por supuesto, funciones de Lambda.
Para abrir el Explorador de AWS, vaya al menú Ver y seleccione Explorador de AWS.
En relación con las funciones de Lambda, el Explorador de AWS le permite:
- Elegir una región.
- Ver y administrar sus funciones de Lambda.
- Invocar las funciones de Lambda en AWS, pasar los parámetros necesarios y visualizar la respuesta. Las herramientas proporcionan datos de muestra para simular llamadas de otros servicios de AWS. Esto es muy útil cuando se crea una función de Lambda que se desencadena por un evento de algún otro servicio, por ejemplo, la creación de un archivo en S3.
- Depurar una versión de ejecución local de una función de Lambda.
- Configurar los servicios que pueden activar una función de Lambda.
- Ver los registros generados por las funciones de Lambda.
Para invocar una función de Lambda desde el kit de herramientas, abra el Explorador de AWS, expanda la sección Lambda, haga clic con el botón derecho en la función de Lambda que desee ejecutar y seleccione Ver función.
Desde ahí, puede elegir un ejemplo de solicitud de la lista desplegable. Estos ejemplos permiten simular llamadas de otros servicios de AWS, como API Gateway, S3, SNS, etc. Esto le permite probar de forma fácil y directa las funciones de Lambda que invocan los eventos de otros servicios.
O puede utilizar su propia solicitud.
Además de lo anterior, todas las herramientas de línea de comandos relacionadas con Lambda se pueden utilizar a través del terminal.
Si es la primera vez que usa AWS, el kit de herramientas para Visual Studio es la mejor manera de comenzar. Tiene la mayoría de las características de todos los kits de herramientas disponibles y es el más fácil de depurar y realizar implementaciones. El Kit de herramientas de AWS para Visual Studio también funciona con Visual Studio Community Edition, que está disponible de forma gratuita. Esto, junto con el nivel gratuito de AWS, es una excelente combinación para los desarrolladores que son nuevos en AWS.
Kit de herramientas de AWS para Visual Studio Code
El Kit de herramientas de AWS para Visual Studio Code (VS Code) está disponible para todos los sistemas operativos en los que se ejecuta VS Code: Windows, Linux y Mac. El kit de herramientas ofrece una experiencia uniforme en los tres sistemas operativos.
Si bien no tiene tantas características como el Kit de herramientas de AWS para Visual Studio, el Kit de herramientas de AWS para Visual Studio Code le permite explorar e interactuar con sus recursos en AWS.
Puede explorar los buckets de S3 (y editar archivos), invocar los puntos de conexión de API Gateway, implementarlos desde el Amazon Elastic Container Registry (ECR), invocar funciones de Lambda en AWS y depurarlas localmente (necesita una herramienta dotnet; consulte la información más abajo). Para obtener una lista completa de sus características, consulte la documentación del Kit de herramientas de AWS para Visual Studio Code.
También puede utilizar todas las herramientas de línea de comandos de AWS disponibles con VS Code. Lo más probable es que así sea como interactuará con AWS desde VS Code. Las herramientas de línea de comandos le brindan la flexibilidad necesaria para administrar todos los servicios de AWS.
Instalación
En la barra lateral principal, haga clic en el icono de extensiones. En la barra de búsqueda que se abre, escriba “kit de herramientas de aws”. Debería ver el Kit de herramientas de AWS en la parte superior de la lista o cerca de ella. Haga clic en Instalar. Es posible que tenga que reiniciar VS Code.
Descripción general y características principales
El Kit de herramientas de AWS para VS Code se puede agregar mediante el mercado de extensiones de VS Code o descargándolo directamente desde la página del Kit de herramientas de AWS en el mercado de Visual Studio.
Si ya configuró una cuenta de AWS en su computadora, el kit de herramientas se conectará automáticamente a AWS mediante esa cuenta.
Aparecerá un icono de AWS en la barra lateral principal de la ventana de VS Code. Desde ahí, puede ver todos los servicios a los que tiene acceso el kit de herramientas.
El kit de herramientas no incluye plantillas de proyectos de Lambda como el Kit de herramientas de Visual Studio. En su lugar, puede crear una nueva función de Lambda a través de la línea de comandos con el comando dotnet new... Hay disponible una amplia lista de plantillas. Estas plantillas le ayudarán a comenzar rápidamente con las funciones de AWS Lambda. Las instrucciones para instalar las plantillas de la CLI de dotnet se encuentran a continuación.
En relación con las funciones de Lambda, el Explorador de AWS le permite:
- Invocar las funciones de Lambda en AWS, pasar los parámetros necesarios y visualizar la respuesta. Las herramientas proporcionan datos de muestra para simular llamadas de otros servicios de AWS que activan Lambda.
- Depure funciones de Lambda de forma local con la Herramienta de prueba AWS .NET Mock Lambda.
- Cargue un archivo zip de una función de Lambda para .NET compilada.
- Vea los registros generados por las funciones de Lambda (a través de Registros de CloudWatch).
Para invocar una función Lambda desde el kit de herramientas, abra el Explorador de AWS, expanda la sección Lambda, haga clic con el botón derecho en la función de Lambda que desee ejecutar y seleccione Invocar en AWS.
Se abrirá una nueva ventana en la que podrá seleccionar una carga útil de solicitud con la que invocar la función.
O puede escribir su propia carga útil de solicitud. La pestaña de salida de VS Code muestra la carga útil de la respuesta.
Además de lo anterior, todas las herramientas de línea de comandos relacionadas con Lambda se pueden usar con VS Code a través del terminal. En particular, el comando dotnet lambda es especialmente útil cuando se trabaja con funciones de Lambda en VS Code. Los detalles y las instrucciones para instalarlo se encuentran en la sección “Extensiones de AWS para la CLI de .NET (dotnet lambda...)” que aparece a continuación.
Kit de herramientas de AWS para Rider
El Kit de herramientas de AWS para Rider es un complemento para Rider que le ayuda a crear, ver y administrar los recursos de AWS. Sus capacidades son similares a las del Kit de herramientas de AWS para VS Code, pero incluye diversas plantillas de proyectos para .NET que le ayudarán a empezar a desarrollar funciones de Lambda rápidamente.
Instalación
Para instalar el Kit de herramientas de AWS para Rider, abra el menú Archivo, luego Configuración y Complementos. Busque el Kit de herramientas de AWS e instálelo.
Si ya configuró una cuenta de AWS en su equipo, el kit de herramientas se conectará automáticamente a su cuenta de AWS.
Una vez instalado, tendrá a su disposición una serie de nuevas plantillas de funciones de AWS Lambda.
Descripción general y características principales
Para abrir el Explorador de AWS, vaya al menú Ver, luego a Herramienta Windows y seleccione Explorador de AWS.
Desde el Explorador de AWS, puede hacer lo siguiente en relación con las funciones de Lambda:
- Invocar las funciones de Lambda en AWS, pasar los parámetros necesarios y visualizar la respuesta. Las herramientas proporcionan datos de muestra para simular llamadas de otros servicios de AWS que activan Lambda.
- Depure funciones de Lambda de forma local con la Herramienta de prueba AWS .NET Mock Lambda.
- Cargue un archivo zip de una función de Lambda para .NET compilada.
- Vea los registros generados por las funciones de Lambda (a través de Registros de CloudWatch).
Para invocar una función de Lambda, abra primero el Explorador de AWS. Para ello, vaya al menú Ver, luego a Herramienta Windows y seleccione Explorador de AWS.
En el Explorador de AWS, expanda la sección Lambda y haga clic con el botón derecho en la función de Lambda que desee invocar. Haga clic en Ejecutar “[Remoto]...”
Se abre una nueva ventana en la que puede elegir una plantilla para invocar la solicitud.
O escriba su propia solicitud.
Haga clic en Ejecutar. A continuación, se mostrará la salida.
Además de lo anterior, todas las herramientas de línea de comandos de Lambda se pueden usar con Rider a través del terminal.
Herramientas de línea de comandos
Todas las herramientas de línea de comandos disponibles funcionarán con cualquier shell, terminal o línea de comandos en Windows, Linux y Mac.
Sin embargo, para disfrutar de una experiencia uniforme en los tres sistemas operativos, le recomendamos que utilice PowerShell Core. Las diferencias en la codificación JSON en diferentes terminales dificultan la provisión de ejemplos que funcionen en todas partes; pero esto no supone ningún problema si se usa PowerShell Core. Por lo tanto, todos los ejemplos de este curso se han probado con PowerShell Core.
Interfaz de la línea de comandos (CLI) de AWS
La interfaz de la línea de comandos (CLI) de AWS es una herramienta de código abierto que le permite administrar todos los recursos de AWS desde la línea de comandos. Puede realizar estas acciones manualmente o ejecutarlas de forma automática con el lenguaje de programación que prefiera. Esta herramienta está disponible para Windows, Linux y macOS.
En la mayoría de los casos, debe instalar la versión 2 de la AWS CLI, ya que admite todas las características más recientes de AWS. A menos que tenga un motivo específico para usar la versión 1 de la AWS CLI, debe utilizar la versión 2.
Cuando se agreguen nuevas características a un servicio de AWS, la herramienta AWS CLI se actualizará para permitirle administrar estas características. La herramienta AWS CLI se actualiza con frecuencia, por lo que debe estar atento a las versiones más recientes.
Instalación
La AWS CLI está disponible para Windows, Linux y macOS. El método de instalación variará en función del sistema operativo. Puede encontrar instrucciones completas en la página de AWS: Instalación o actualización de la versión más reciente de la AWS CLI. AWS desaconseja instalar la AWS CLI con ningún software de administración de paquetes. En su lugar, utilice el enlace proporcionado anteriormente.
Tenga en cuenta que debe actualizar la AWS CLI de vez en cuando para obtener las características más recientes.
Para comprobar su versión de la AWS CLI, ejecute el siguiente comando:
aws --version
Verá una respuesta similar a la siguiente:
aws-cli/2.5.4 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
Esto me indica que tengo instalada la versión 2.5.4 de la AWS CLI.
Para ver cuál es la versión más reciente de la AWS CLI, vaya a https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst, debajo de “CHANGELOG” aparecerá la versión más reciente. En el momento de escribir este módulo, es 2.7.2, así que necesito actualizar mi AWS CLI.
Descripción general y características principales
Con la AWS CLI, puede administrar todos sus recursos de AWS. La AWS CLI incluye potentes capacidades de consulta y filtrado que pueden ayudarle a encontrar los recursos que busca. Como era de esperar, la AWS CLI le permite enumerar, ver, administrar e invocar funciones de Lambda.
En la Referencia de comandos de la AWS CLI encontrará una amplia documentación con ejemplos.
AWS Lambda para .NET Core: plantillas
Con la AWS CLI, puede administrar todos sus recursos de AWS. La AWS CLI incluye potentes capacidades de consulta y filtrado que pueden ayudarle a encontrar los recursos que busca. Como era de esperar, la AWS CLI le permite enumerar, ver, administrar e invocar funciones de Lambda.
En la Referencia de comandos de la AWS CLI encontrará una amplia documentación con ejemplos.
AWS Lambda para .NET Core: plantillas
Al usar Visual Studio y Rider, los kits de herramientas de AWS le proporcionan una variedad de plantillas de proyectos de C# (y F#) para ayudarlo a comenzar a utilizar las funciones de AWS Lambda.
Estas plantillas comienzan con la más simple: una función de Lambda que toma una cadena, la convierte en mayúsculas y devuelve una cadena. Es muy sencillo, pero es un buen punto de partida para comprobar lo fácil que es escribir código e implementarlo en AWS Lambda en cuestión de minutos.
También hay disponibles plantillas más complejas, que configuran aplicaciones web .NET completas o aplicaciones API y crean toda la infraestructura necesaria para usted: roles, permisos, buckets, puertas de enlace de API, etc.
La mayoría de las plantillas de proyectos vienen con un directorio src y test, lo que le brinda de inmediato capacidades de pruebas unitarias que puede ampliar a medida que crece su aplicación. Los proyectos de prueba le ayudarán a aprender cómo funciona la función de Lambda y le proporcionarán una forma sencilla de depurar su código.
Instalación
Para instalar las plantillas, ejecute el siguiente comando:
dotnet new -i "Amazon.Lambda.Templates::*"
Descripción general y características principales
Una vez finalizada la instalación, utilizará el comando dotnet new para crear nuevos proyectos de funciones de Lambda.
Para ver la lista de plantillas de proyectos disponibles, ejecute el siguiente comando:
dotnet new lambda --list
Verá un resultado similar al siguiente (tenga en cuenta que las plantillas disponibles cambian periódicamente):
Puede observar que el nombre abreviado de algunas plantillas comienza por “serverless.” y algunas comienzan por “lambda.”.
Aquellas que comienzan por “serverless.” utilizan AWS Serverless Application Model (SAM) para implementar la función de Lambda y crear la infraestructura necesaria que utilizará la función de Lambda. AWS SAM es un marco de código abierto que le permite crear aplicaciones sin servidor en AWS. Además de definir la función de Lambda, con AWS SAM puede definir otros recursos, como puertas de enlace de API, bases de datos y orígenes de eventos.
Si navega al directorio projectname/src/projectname, verá un archivo llamado serverless.template. Esto define la infraestructura requerida y cómo se conecta a la función de Lambda. En todas las plantillas “serverless.” enumeradas anteriormente, se utiliza una puerta de enlace de API para enrutar las solicitudes HTTP a la función de Lambda.
Las plantillas que comienzan por “lambda.” no utilizan el modelo de aplicaciones sin servidor y no configuran otra infraestructura. Si se requiere otra infraestructura, tendrá que configurarla usted mismo. Por ejemplo, la plantilla de proyecto lambda.Kinesis muestra cómo procesar los eventos de Kinesis entrantes, pero NO crea las secuencias de Kinesis por usted ni agrega los permisos pertinentes necesarios para que Kinesis active la función de Lambda.
Para crear un nuevo proyecto basado en la plantilla lambda.EmptyFunction, ejecute:
dotnet new lambda.EmptyFunction
Las herramientas son de código abierto y están disponibles para verlas en GitHub,
https://github.com/aws/aws-lambda-dotnet#dotnet-cli-templates.
Al igual que con las demás herramientas de línea de comandos, le recomendamos que vea las páginas relevantes de GitHub para ver cuándo se lanzan nuevas versiones.
Extensiones de AWS para la CLI de .NET (dotnet lambda...)
Si bien la herramienta AWS CLI le permite administrar todos los recursos de AWS, las Extensiones de AWS para la CLI de .NET se centran específicamente en las funciones de Lambda y se invocan como una herramienta .NET, es decir, dotnet lambda.
Instalación
Para instalar la Extensión de AWS para la CLI de .NET, ejecute lo siguiente:
dotnet tool install -g Amazon.Lambda.Tools
Para comprobar que se instaló correctamente, ejecute:
dotnet lambda
Esto generará un resumen de los comandos que puede usar y un número de versión.
Descripción general y características principales
Esta herramienta funciona desde cualquier shell y es especialmente útil cuando se usa desde el terminal dentro de Visual Studio Code y Rider. Le permite realizar tareas comunes relacionadas con la función de Lambda.
Por ejemplo, para enumerar todas las funciones de Lambda, puede usar:
dotnet lambda list-functions
O bien, para invocar una función de Lambda, ejecute:
dotnet lambda invoke-function functionName
También puede implementar funciones de Lambda. Tras crear una función de Lambda, con las plantillas de dotnet Lambda (ver más arriba), puede implementar la función en AWS mediante:
dotnet lambda deploy-function
Esto dará inicio a un proceso de creación e implementación guiada. La herramienta le pedirá el nombre de la función de Lambda y el rol que desea asignar a la función (o crear uno nuevo). Si creó un nuevo rol, le pedirá que elija una política de permisos para ese nuevo rol. Luego, la herramienta implementará la función en AWS y en unos segundos podrá invocarla.
Para ver todas las opciones de línea de comandos disponibles, utilice:
dotnet lambda deploy-function --help
Tenga en cuenta que detrás de cada comando puede haber mucha funcionalidad, por lo que es importante entender que cada línea de comandos admite múltiples opciones. Por ejemplo, update-function-config es donde se habilitan y configuran las URL de las funciones de Lambda. Esa funcionalidad no está disponible en el comando deploy-function. Es importante mantenerse al día con la documentación y las características de la versión más reciente del servicio Lambda, ya que le ayudará a comprender y utilizar las características más recientes.
Si bien esta herramienta es muy práctica y eficaz para administrar las funciones de Lambda al desarrollar código y aprender sobre AWS, le recomendamos que utilice un proceso de CI/CD sólido para implementarla en sus aplicaciones cuando alcancen un cierto nivel de madurez. AWS es compatible con las principales herramientas de CI/CD.
AWS Tools para PowerShell
AWS Tools para PowerShell expone el AWS SDK para .NET a través de un conjunto de módulos de PowerShell. Para quienes estén familiarizados con los scripts de PowerShell, esto lo convierte en una herramienta poderosa para escribir scripts de implementación y mantenimiento.
AWS Tools para PowerShell se puede instalar en Windows, Mac y Linux y ofrecen un conjunto idéntico de características en las tres plataformas.
Las herramientas están disponibles en un solo módulo o en una versión modularizada en la que puede descargar los módulos necesarios según sea necesario.
Se recomienda la versión modularizada para entornos de producción.
Para encontrar más información sobre cómo elegir entre estas versiones, consulte esta página.
Instalación
Para la instalación en Windows, consulte la guía instalación de AWS Tools para PowerShell en Windows.
Para la instalación en Linux o Mac, consulte la guía instalación de AWS Tools para PowerShell en Linux o macOS.
Descripción general y características principales
La cantidad de módulos y de comandos que puede ejecutar AWS Tools para PowerShell es muy grande. En relación con AWS Lambda, puede utilizar las herramientas para enumerar, ver, implementar, administrar e invocar funciones.
Para ver todos los comandos disponibles, ejecute:
Get-Command -Module AWS.Tools.Lambda
Puede encontrar la documentación completa de todos los comandos en la referencia de cmdlet de AWS Tools para PowerShell. Navegue hasta la sección Lambda de la barra izquierda.
Para enumerar todas las funciones de Lambda, ejecute:
Get-LMFunctionList
Para invocar una función de Lambda, ejecute:
$Response=Invoke-LMFunction -FunctionName StringToUpperCase -Payload '"hello world"'
[System.IO.StreamReader]::new($Response.Payload).ReadToEnd()
Funciones AOT nativas de Docker para .NET 7
La principal ventaja de este enfoque es que los arranques en frío de las funciones de .NET 7 son considerablemente más rápidos. En las pruebas que utilizan funciones comparables que ejecutan .NET 6 con una versión ejecutable administrada y .NET 7 que utilizan la compilación AOT, la función con .NET 7 se inicia hasta un 86 % más rápido.
Para obtener más información sobre las aplicaciones .NET sin servidor en AWS, consulte esta publicación: Building serverless .NET applications on AWS Lambda using .NET 7.
Para utilizar la compilación con funciones de Lambda para .NET 7, debe instalar y ejecutar Docker.
Puede descargar Docker desde la descripción general de la instalación de Docker.
Comparación de herramientas seleccionadas
Pruebas de conocimientos
Ya completó el módulo 2, Herramientas para el desarrollo de .NET con AWS Lambda. El siguiente test le permitirá comprobar lo que ha aprendido hasta ahora.
1. ¿Qué kit de herramientas de AWS para un IDE tiene más características? (seleccione uno)
a. Visual Studio Code
b. Visual Studio
c. Rider
d. Todos tienen las mismas características
2. ¿Qué sistemas operativos son compatibles con las Extensiones de AWS para la CLI de .NET?
a. Mac
b. Linux
c. Windows
d. Todos los anteriores
3. ¿Cuál es la forma recomendada de instalar la AWS CLI?
a. Homebrew
b. Pip
c. Chocolatey
d. Descargar directamente desde AWS
Respuestas: 1-b, 2-d, 3-d
Conclusión
Pero, como ocurre con muchas cosas como esta, la mejor manera de aprender es empezar a experimentar. En el siguiente módulo, aprenderá a utilizar .NET con el servicio Lambda.