Cómo crear una aplicación sin servidor con AWS Chalice

Recientemente me encontré con AWS Chalice y me fascinó la simplicidad y facilidad de uso que ofrece.

AWS Chalice es un marco sin servidor que le permite crear aplicaciones sin servidor usando Python e implementarlas en AWS usando Amazon API Gateway y AWS Lambda.

Decidí jugar con él y en unos minutos pude crear e implementar una API REST de muestra en AWS.

En este artículo, lo guiaré a través de los pasos necesarios para crear e implementar una aplicación sin servidor que obtenga las últimas noticias de Google News usando Chalice.

Prerrequisitos

Este tutorial requiere una cuenta de AWS. Si aún no tiene uno, siga adelante y cree uno. Nuestra aplicación utilizará solo los recursos de nivel gratuito, por lo que el costo no debería ser un problema.

También necesita configurar la seguridad y crear usuarios y roles para su acceso.

Cómo configurar las credenciales de AWS

Chalice utiliza la interfaz de línea de comandos (CLI) de AWS en segundo plano para implementar el proyecto. Si no ha utilizado la CLI de AWS antes para trabajar con recursos de AWS, puede instalarla siguiendo las pautas aquí.

Una vez instalado, debe configurar su AWS CLI para usar las credenciales de su cuenta de AWS.

Cómo instalar Chalice

A continuación, debe instalar Chalice. Usaremos Python 3 en este tutorial, pero puede usar cualquier versión de Python compatible con AWS Lambda.

Verificar la instalación de Python

Instalar cáliz

Verificar la instalación del cáliz

Cómo crear un proyecto

A continuación, ejecute el chalice new-projectcomando para crear un nuevo proyecto.

Esto creará una daily-newscarpeta en su directorio actual. Puede ver que Chalice ha creado varios archivos en esta carpeta. Trabajaremos con los archivos app.pyy requirements.txtsolo en este artículo.

Echemos un vistazo al contenido del app.pyarchivo:

El new-projectcomando creó una aplicación de muestra daily-news. Define una vista única /, que devuelve el cuerpo JSON {"hello": "world"}cuando se llama. Ahora puede modificar esta plantilla y agregar más código para leer noticias de Google.

Usaremos la fuente RSS de Google para recibir nuestras noticias. Dado que las fuentes RSS consisten en datos en formato XML, necesitaremos una biblioteca de Python llamada Beautiful Soup para analizar los datos XML.

Puede instalar Beautiful Soup y su biblioteca de análisis XML usando pip, así:

A continuación, agregue las siguientes importaciones a app.py. Esto esencialmente agrega importaciones desde urllibpara realizar llamadas HTTP y bs4analizar XML.

A continuación, debe agregar un método para obtener la fuente RSS de Google. Lo usaremos urllibpara realizar una llamada HTTP al extremo RSS de Google y obtener la respuesta. Luego, puede analizar la respuesta para extraer el título de la noticia y la fecha de publicación, y crear una lista de noticias.

Para hacer esto, agregue el siguiente código a su app.py:

Actualice el método de índice app.pypara invocar este método y devolver la lista de noticias como resultado.

Tenga en cuenta que instaló algunas dependencias para que el código funcione. Estas dependencias se instalaron localmente y no estarán disponibles para el contenedor de AWS Lambda en tiempo de ejecución.

Para que estén disponibles para AWS Lambda, deberá empaquetarlos junto con su código.

Para hacer eso, agregue lo siguiente al requirements.txtarchivo. Chalice empaqueta estas dependencias como parte de su código durante la compilación y las carga como parte de la función Lambda.

Cómo implementar el proyecto

Implementemos esta aplicación. Desde la daily-newscarpeta, ejecute el chalice deploycomando.

Esto implementa su API en Amazon API Gateway y crea una nueva función en AWS Lambda.

Intentemos acceder a la API ahora. Puede utilizar curlpara invocar la URL de API Gateway que recibió durante chalice deploy. La respuesta de la llamada a la API devolvería una lista de noticias como se muestra a continuación.

Cómo limpiar los recursos

También puede utilizar el chalice deletecomando para eliminar todos los recursos creados cuando ejecutó el chalice deploycomando.

Conclusión

¡Felicidades! Acaba de implementar una aplicación sin servidor en AWS con Chalice. No fue demasiado difícil, ¿verdad?

Ahora puede continuar y realizar modificaciones en su app.pyarchivo y volver chalice deploya ejecutarlo para volver a implementar sus cambios.

También puede utilizar Chalice para integrar su aplicación sin servidor con Amazon S3, Amazon SNS, Amazon SQS y otros servicios de AWS. Eche un vistazo a los tutoriales y siga explorando. El código fuente completo de este tutorial se puede encontrar aquí.

Gracias por quedarse conmigo hasta ahora. Espero que les haya gustado el artículo. Puedes conectarte conmigo en LinkedIn, donde hablo regularmente sobre tecnología y vida. También eche un vistazo a algunos de mis otros artículos sobre Medium. Feliz lectura ?