Desmitificar la DX para funciones Lambda

Rate this content
Bookmark

En esta sesión, comparto contigo cómo AWS CDK y AWS Toolkit pueden simplificar la experiencia del desarrollador para ejecutar cargas de trabajo sin servidor en la nube

Una sesión sin diapositivas, solo un IDE y una CLI para implementar una API en la nube, actualizarla rápidamente y recuperar registros sin salir de tu IDE favorito!

This talk has been presented at DevOps.js Conf 2024, check out the latest edition of this JavaScript Conference.

FAQ

El AWS Cloud Development Kit, o CDK, es una herramienta de infraestructura como código ofrecida por AWS que permite a los desarrolladores escribir en su lenguaje favorito y generar automáticamente plantillas de CloudFormation para el despliegue y aprovisionamiento de código e infraestructura.

Para desplegar una carga de trabajo en AWS usando CDK, simplemente tienes que ejecutar el comando 'cdk deploy' en tu terminal y seleccionar el perfil de configuración adecuado para tu región e información necesaria.

AWS CDK permite probar funciones Lambda localmente utilizando SAM (Serverless Application Model), una CLI que se puede ejecutar con el comando 'SAM local start API' para probar APIs en un entorno local.

Para obtener una retroalimentación rápida, puedes utilizar la opción 'hot swap' con el comando 'CDK deploy'. Esto permite actualizar el código de la función Lambda sin pasar por un nuevo despliegue de CloudFormation, acelerando significativamente el proceso de desarrollo.

AWS Lambda Power Tool es una herramienta que facilita la operacionalización de la observabilidad de las aplicaciones en AWS. Proporciona funcionalidades como la adición de trazas, métricas y registros, que generalmente están disponibles en CloudWatch.

Puedes invocar funciones Lambda directamente desde tu IDE utilizando el AWS Toolkit. Esta herramienta permite ejecutar funciones directamente, sin necesidad de usar comandos de CLI como curl, proporcionando una integración directa con eventos y visualización de resultados.

Amazon Q es una herramienta en vista previa que permite hacer preguntas sobre partes específicas del código y recibir sugerencias de optimización. Por ejemplo, puede sugerir métodos más eficientes para realizar operaciones de base de datos, como usar 'copy' en lugar de insertar registros individualmente.

Luca Mezzalira
Luca Mezzalira
30 min
15 Feb, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. Aprende sobre cómo usar AWS Cloud Development Kit (CDK) para escribir código en tu lenguaje favorito y generar automáticamente plantillas de CloudFormation. Prueba localmente con SAM CLI e implementa con CDK. Acelera las pruebas y actualizaciones con las banderas de CDK. Usa AWS Toolkit para invocar funciones Lambda, analizar registros y generar código con Application Composer.

1. Introducción a la Experiencia del Desarrollador de Lambda

Short description:

Bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. Descubre herramientas para desarrollar adecuadamente cargas de trabajo sin servidor utilizando la función Lambda directamente con Visual Studio Code o IntelliJ.

Hola, y bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. ¿Con qué frecuencia te has encontrado desplegando tu carga de trabajo de Node.js en la nube y tienes que esperar a que CloudFormation o Terraform o cualquier otra cosa despliegue todo tu código cada vez, a pesar de que solo cambies una línea de código? El ciclo de retroalimentación que tienes que esperar para el despliegue es bastante largo. A veces sales a tomar un café, tal vez pierdes el impulso, y por lo tanto, hoy quiero mostrarte cuáles son las herramientas disponibles para desarrollar adecuadamente una carga de trabajo sin servidor utilizando la función Lambda, tu servicio de cómputo favorito, directamente con Visual Studio Code o IntelliJ porque todo lo que te voy a mostrar hoy será válido para VS Code.

Read also

2. Usando AWS Cloud Development Kit (CDK)

Short description:

AWS Cloud Development Kit (CDK) es una herramienta de infraestructura como código proporcionada por AWS. Te permite escribir código en tu lenguaje favorito y genera automáticamente una plantilla de CloudFormation para el despliegue. Veamos un ejemplo: una aplicación simple de Hola Mundo utilizando ESM con nodos y CDK. CDK te permite escribir TypeScript y extender la función Lambda con capacidades adicionales como opciones de empaquetado utilizando ESBuild. Desplegar la solución es tan simple como ejecutar 'cdk deploy' y elegir el perfil con la información necesaria. CDK se encargará del despliegue, incluyendo la creación de una API HTTP que actúa como proxy a través de API Gateway. Una vez desplegado, puedes acceder a la API utilizando la URL proporcionada.

así como IntelliJ. Así que empecemos. En primer lugar, lo que vamos a usar hoy es el AWS Cloud Development Kit, o CDK como todos lo llaman, es una de las herramientas de infraestructura como código que se ofrecen por AWS y te permite escribir en tu lenguaje favorito y luego automáticamente, detrás de escena, cuando estamos construyendo nuestro artefacto, lo que sucede es que estamos generando una plantilla de CloudFormation que luego se utilizará para el despliegue y aprovisionamiento de tu código e infraestructura. Ahora, intentemos ver un ejemplo. He preparado un par de ejemplos para que podamos empezar a ver eso. Así que el primer ejemplo aquí es sobre un ejemplo muy simple de Hola Mundo. He creado esta plantilla para usar ESM con nodos y usar CDK para definir mi infraestructura. Como puedes ver aquí, la belleza de CDK es que estoy escribiendo TypeScript, que en este caso es mi lenguaje favorito para escribir CDK. Y aquí tengo un constructo de alto nivel como una función de node.js que extiende la función Lambda. Como puedes ver aquí, está extendiendo este constructo, este constructo de bajo nivel que se llama función Lambda y está agregando nuevas capacidades como la posibilidad de agregar opciones de empaquetado. Por defecto, CDK te ofrece la posibilidad de usar ESBuild y, por lo tanto, ¿por qué no aprovechar eso para hacer que el tamaño de nuestro paquete sea más pequeño? Como puedes ver aquí, uso el empaquetado con una serie de configuraciones que me permiten tener la posibilidad de usar módulos ESM, así como otras capacidades como el esperar en el nivel superior, por ejemplo. Y ahora, si queremos desplegar esta solución en una cuenta de AWS, es tan simple como escribir aquí cdk deploy y luego decido qué perfil que configuré múltiples perfiles en mi máquina quiero usar, donde tengo la región, tengo mi información necesaria para desplegar esta carga de trabajo en la nube. Ahora es la primera vez que lo hago. Como puedes ver, CDK me está diciendo, oh, por cierto, hay algunas cosas que necesitas desplegar, que son todas las cosas en verde. Como puedes ver aquí, eso será necesario para tener esta API funcionando dentro de mi sistema. Así que, está bien, esto es tan simple como una función lambda con una API HTTP que actúa como proxy que muestra como API Gateway la posibilidad de exponer tu API. En un minuto, esto estará funcionando y disponible en la nube. Y mientras tanto, podemos ver que aquí tenemos la definición de mi hola ESM lambda. Luego tenemos una definición de API HTTP que puedes hacer fácilmente con CDK. Solo creo la integración que básicamente te permite tener todos los roles y configuraciones necesarios para enlazar en una ruta específica tu función lambda. Y aquí tienes la ruta que es la ruta raíz, el método con el que puedes invocar esta función lambda específica. Y eso es básicamente lo que obtienes. Y al final, vamos a tener también este constructo, esta salida de CFN, básicamente resalta dentro de tu línea de comandos, la URL donde puedes encontrar esta API. Tan simple como eso. Así que ahora hemos desplegado todo. Como puedes ver, tenemos una URL que es útil. Así que si todo va bien, deberíamos tener nuestra API funcionando. Y aquí estamos. Tenemos hola nodo.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

AWS Lambda bajo el capó
Node Congress 2023Node Congress 2023
22 min
AWS Lambda bajo el capó
Top Content
In this Talk, key characteristics of AWS Lambda functions are covered, including service architecture, composition, and optimization of Node.js code. The two operational models of Lambda, asynchronous and synchronous invocation, are explained, highlighting the scalability and availability of the service. The features of Lambda functions, such as retries and event source mapping, are discussed, along with the micro VM lifecycle and the three stages of a Lambda function. Code optimization techniques, including reducing bundle size and using caching options, are explained, and tools like webpack and Lambda Power Tuning are recommended for optimization. Overall, Lambda is a powerful service for handling scalability and traffic spikes while enabling developers to focus on business logic.
Optimización del rendimiento de AWS Lambda
Node Congress 2024Node Congress 2024
25 min
Optimización del rendimiento de AWS Lambda
This Talk covers various optimization techniques for Lambda functions, including parameter fetching, code minification and bundling, observability with Power Tools and X-Ray, baseline testing with load testing tools, caching with Elastic Cache and Redis, and optimizing code size and memory usage. The importance of library choices, power tuning for cost and performance, leveraging subprocesses and sandboxes, and adjusting concurrency limits are also discussed. Overall, these techniques can significantly improve Lambda function performance.
Construyendo APIs GraphQL sin servidor en tiempo real en AWS con TypeScript y CDK
React Summit 2020React Summit 2020
25 min
Construyendo APIs GraphQL sin servidor en tiempo real en AWS con TypeScript y CDK
This Talk provides an introduction to JavaScript and React, as well as insights into building real-time serverless GraphQL APIs with TypeScript, AppSync, and CDK. It covers the concepts of GraphQL schema, data sources, and resolvers, as well as the use of GraphQL subscriptions for real-time communication. The Talk also highlights the features of AppSync and CDK for building APIs and infrastructure. It concludes with a demonstration of creating an API with CDK and AppSync, including the creation of Lambda functions and DynamoDB tables.
Automatizar Despliegues de Sitios React desde GitHub a S3 y CloudFront
DevOps.js Conf 2021DevOps.js Conf 2021
33 min
Automatizar Despliegues de Sitios React desde GitHub a S3 y CloudFront
This Talk focuses on automating React deployments to S3 and CloudFront using a CICD pipeline in AWS. It covers setting up the pipeline, sourcing code from GitHub, and configuring infrastructure with Terraform and Terragrunt. The Talk also demonstrates the process of building and deploying a React application using AWS CodeBuild and CodePipeline. Overall, it provides a comprehensive overview of the tools and techniques involved in automating React deployments in AWS.
Construyendo un sofisticado CodePipeline con CDK en una configuración de Monorepo
DevOps.js Conf 2024DevOps.js Conf 2024
8 min
Construyendo un sofisticado CodePipeline con CDK en una configuración de Monorepo
Imagine starting as an AWS DevOps engineer in a small company. Your boss wants an all-in AWS approach, with CICD entirely on AWS for automated deployments. Use AWS CDK for creating a pipeline, stages, and actions. Learn how to handle multiple pipelines for different accounts and handle manual approval for staging and production environments. Discover how to trigger pipelines with EventBridge and Lambda, and create sophisticated pipelines for different scenarios.
Infraestructura como Código para Aplicaciones React en AWS Escritas en TypeScript
React Advanced 2021React Advanced 2021
30 min
Infraestructura como Código para Aplicaciones React en AWS Escritas en TypeScript
This Talk covers infrastructure as code using Terraform and CDK. The speaker demonstrates how to build infrastructure for a React application, including an S3 bucket and connecting to a real domain. They also discuss configuring cache behavior, CloudFront, and remote backends. TypeScript is highlighted as a powerful language for infrastructure as code, and the importance of automation and well-documented code for global-scale infrastructures is emphasized.

Workshops on related topic

Construyendo Aplicaciones Serverless en AWS con TypeScript
Node Congress 2021Node Congress 2021
245 min
Construyendo Aplicaciones Serverless en AWS con TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
Este masterclass te enseña los conceptos básicos del desarrollo de aplicaciones serverless con TypeScript. Comenzaremos con una función Lambda simple, configuraremos el proyecto y la infraestructura como código (AWS CDK) y aprenderemos cómo organizar, probar y depurar una aplicación serverless más compleja.
Tabla de contenidos:        - Cómo configurar un proyecto serverless con TypeScript y CDK        - Cómo escribir una función Lambda testeable con arquitectura hexagonal        - Cómo conectar una función a una tabla DynamoDB        - Cómo crear una API serverless        - Cómo depurar y probar una función serverless        - Cómo organizar y hacer crecer una aplicación serverless


Materiales mencionados en el masterclass:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
Blog de DynamoDB de Alex DeBrie: https://www.dynamodbguide.com/
Excelente libro para DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
DevOps.js Conf 2024DevOps.js Conf 2024
59 min
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
Workshop
Eyal Keren
Eyal Keren
Este taller te permite aprender cómo desarrollar aplicaciones React y luego desplegarlas en la nube (o construirlas en la consola) junto con un backend completamente abstracto, sin una configuración de backend compleja, simplificando la construcción y el despliegue de aplicaciones frontend y web en la nube.