
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Python sin servidor con AWS Lambda
Tiempo de lectura: 8 minutos
Usar Python en entornos serverless puede ser más automatizado que lo que compartí en mi anterior post usando PHP y Bref. En AWS, ya existen entornos preexistentes que facilitan el despliegue inicial sin necesidad de utilizar herramientas adicionales. Sin embargo, utilizar herramientas como el framework Serverless sigue teniendo valor.
Este ejemplo creará un AWS Lambda para Python utilizando sin servidor. A continuación, añadiremos una API Gateway para que esté disponible mediante un cliente HTTP o navegador de su elección.
Requisitos previos
A continuación se indican las cosas que necesitarás para seguir todos los ejemplos:
Node.js para instalar Serverless
Sin servidor para facilitar la creación y gestión de entornos
Cuenta AWS y claves de acceso para un usuario con acceso a AWS S3 así como a AWS Lambda
Enfoque de la consola de AWS
Para la creación de funciones básicas, se puede utilizar la consola de AWS para navegar hasta el área de administración de Lambda y hacer clic en Create Function en la parte superior derecha. A continuación, se nombrará y seleccionará el entorno deseado.
AWS Console Lambda Python Function Creation
Framework sin servidor
Aunque la consola de AWS puede realizar las tareas esenciales de creación de una función, utilizaremos el Framework Serverless Al utilizar el marco Serverless, obtendremos scripts para automatizar cualquier posible repetición del proceso, así como código de inicio para una validación inmediata. Por lo tanto, nuestro primer paso es conseguir instalar este framework en el sistema de desarrollo que estés utilizando. Recomendamos instalarlo globalmente, para permitir el uso desde cualquier lugar a través de CLI.
Credenciales de AWS
Con Serverless instalado, asegúrate de que también has configurado las credenciales de AWS necesarias para que Serverless interactúe con los distintos servicios de AWS (S3, Lambda, y potencialmente EC2 o bases de datos según sea necesario). En este ejemplo, solo utilizaremos S3 y Lambda. Puedes leer más sobre esto en serverless.com.
Crear base
Serverless le guiará a través de unas pocas indicaciones para ayudarle a crear una estructura inicial. Para ello, llama a Serverless desde el directorio del proyecto a través de CLI.
Siga las instrucciones
Serverless comenzará a guiarte a través de la creación de un nuevo proyecto, el tipo de proyecto que deseas crear (Node.js, Python, u Otro), un nombre para este proyecto, y si deseas activar los servicios Serverless añadidos (que requieren una Account Serverless). Una vez completado, se generará la estructura base.
AWS Lambda Python Project Creation With Serverless
Ejemplo de archivo YML
Como ejemplo, a continuación se muestra un principio serverless.yml creado por el proceso:
service: app
provider:
name: aws
runtime: python3.8
functions:
hello:
handler: handler.helloEn el archivo, observe el nombre del servicio, que puede modificar para adaptarlo a las convenciones de denominación de sus funciones. Por defecto, llevará el nombre que hayas especificado durante la creación del proyecto.
A continuación, podemos ver la información del proveedor de AWS Lambda con el tiempo de ejecución de Python.
Luego está la sección que describe los detalles de la función. Se incluye el manejador inicial para probar tanto como una función o HTTP (que requiere un paso añadido que se muestra más adelante).
Implementación en AWS Lambda
Para los casos de uso de Function o HTTP, el proyecto predeterminado serverless proporciona un esqueleto suficiente para implementar directamente en AWS Lambda y realizar pruebas con Serverless. Aprovechando la configuración de credenciales de AWS añadida anteriormente, Serverless desplegará directamente a Lambda utilizando el contenido de serverless.yml como criterio.
IMPORTANTE: La aplicación de ejemplo, tal cual, no lleva ningún tipo de autenticación o verificación. Cualquiera con acceso a la URL proporcionada tras la implementación puede acceder a ella. Hacerlo podría causar cargos inesperados en sus cuentas. Por lo tanto, asegure la aplicación si tiene intención de dejarla activa.
Probar la función
En el caso de una función, hay dos maneras de probar. Una forma es utilizar la consola de AWS, mientras que la segunda es utilizar Serverless a través de CLI desde el sistema utilizado para el despliegue.
Consola AWS
En la consola de AWS, seleccione el elemento Lambda de la lista de servicios informáticos.
AWS Console-Lambda Dashboard
En el panel Lambda, puede seleccionar la función creada y crear una nueva prueba haciendo clic en Configure test events. También puede hacer clic en el botón Test para recibir el mismo mensaje.
Lambda Create Test
Para probar el esqueleto creado, añade un nombre y altera ligeramente el JSON en el cuerpo.
Configure Test Events
Al hacer clic en el botón Create en la parte inferior del cuadro de diálogo, puede hacer clic en el botón Test para ejecutar la prueba. La ejecución debería dar lugar a un área de diálogo verde que puede ampliar para mostrar los resultados.
Lambda Test Results
Ejecución de funciones sin servidor
Como se indicó anteriormente, también puede utilizar la CLI sin servidor para probar la función mediante el siguiente comando desde la raíz de la aplicación local:
Ejemplo de resultado:
Serverless Lambda Function Execution
Prueba de una función HTTP
También puede realizar la prueba como una función HTTP. Sin embargo, para ello será necesario añadir un activador de API Gateway en la consola de AWS Lambda. El disparador se podría haber especificado en el serverless.yml también, pero para este ejemplo básico, es bueno que sepas cómo hacerlo manualmente.
En la página de propiedades de la función Lambda, haga clic en Add Trigger en el área Designer. En el siguiente mensaje, seleccione API Gateway de la lista.
Add an API Gateway Trigger
A continuación, defina el desencadenante en Create a new API y seleccione HTTP API antes de pulsar el botón Add .
Define the API Gateway Trigger
Tras añadir el activador de API Gateway, ahora es posible solicitar la URL proporcionada por el activador utilizando un cliente HTTP o un navegador estándar.
Request the Function in a Browser
¿Qué sigue?
Con una función de AWS Lambda creada, puede seguir añadiendo más código y creando aplicaciones de Python más sólidas aprovechando las tecnologías sin servidor disponibles en la actualidad. Esté atento a futuras publicaciones que muestren cómo crear funciones útiles para aprovechar las API y los servicios de Vonage con AWS Lambda.