Cómo crear su primera función Python 3.6 AWS Lambda – Lenguaje Python
Amazon Web Services (AWS) Lambda proporciona un servicio informático basado en el uso para ejecutar código Python en respuesta a eventos definidos por el desarrollador. Por ejemplo, si un HTTP POST entrante llega a API Gateway o se carga un nuevo archivo en
AWS S3 luego, AWS Lambda puede ejecutar una función para responder a esa llamada a la API o manipular el archivo en S3.
AWS Lambdas no está relacionado con los lenguajes Python ‘ lambda
expresiones, que se utilizan para crear funciones anónimas. El nombre de AWS Lambda simplemente choca con el lambda
nombre de la palabra clave.
Aprendamos a escribir y ejecutar rápidamente una función Lambda para ejecutar código básico de Python 3.6 que utiliza variables de entorno como entrada. Este código, que también es disponible en GitHub en el repositorio de ejemplos de publicaciones de blog se puede cambiar para que pueda construir programas Python mucho más complicados.
Nuestras herramientas
No se requieren herramientas de entorno de desarrollo local para este tutorial, aparte de un navegador web. Todo el trabajo se realizará en AWS a través de su consola.
Estos pasos también se pueden completar desde la línea de comando a través del
boto3 biblioteca, pero no cubriremos eso en esta publicación.
Si usar Python 2 sigue siendo su problema en lugar de Python 3, eche un vistazo a esta otra publicación que muestra cómo ejecutar el código Python 2.7 en AWS Lambda.
Primeros pasos con AWS Lambda
Regístrese para una nueva Cuenta de Amazon Web Services, que proporciona un generoso nivel gratuito, o utilice su cuenta de AWS existente.
Después de registrarse, pueden aparecer algunos tutoriales, pero omítelos y vaya a la consola principal. AWS tiene toneladas de servicios, y cada mes se agregan más, por lo que usar el cuadro de búsqueda es la mejor manera de moverse. Seleccione el cuadro de texto de búsqueda, ingrese «lambda» y seleccione «Lambda» para llegar a la página de inicio de Lambda.
Haga clic en el botón «Crear una función Lambda». Aparecerá la página «Seleccionar plano».
Seleccione «Función en blanco» y aparecerá la página «Configurar disparadores». No fue obvio para mí al principio, pero en realidad no es necesario configurar un disparador para seguir adelante. Un desencadenante es cómo la función Lambda normalmente sabe cuándo ejecutarse en función de un evento de otro servicio de AWS, como
Puerta de enlace API o
Cloudwatch.
No configuraremos un disparador para esta función porque podemos iniciar manualmente el Lambda para probarlo cuando hayamos terminado de configurarlo. Deje el icono del disparador en blanco y haga clic en el botón «Siguiente» para avanzar.
A continuación, llegamos a la pantalla «Configurar función» donde finalmente podemos escribir código.
Código Python para nuestra función Lambda
Ingrese un nombre para la función Lambda, como «python_3_6_lambda_test», así como una descripción. Una descripción es opcional, pero es útil cuando tiene docenas o cientos de funciones Lambda diferentes y necesita mantenerlas en orden. En el menú desplegable Runtime, seleccione Python 3.6 como lenguaje de programación.
Debajo del menú desplegable Runtime hay un cuadro de texto grande para el código, precargado con un lambda_handler
definición de función. El menú desplegable «Tipo de entrada de código» también se puede cambiar para permitir la carga de un archivo ZIP o la entrada de un archivo desde un depósito de S3. Para nuestra primera función Lambda simple, nos ceñiremos a la opción «Editar código en línea». Copie o escriba el siguiente código, reemplazando lo que ya está en el cuadro de texto. Este código también está disponible en este repositorio de GitHub de código abierto.
import os
def lambda_handler(event, context):
what_to_print = os.environ.get("what_to_print")
how_many_times = int(os.environ.get("how_many_times"))
# make sure what_to_print and how_many_times values exist
if what_to_print and how_many_times > 0:
for i in range(0, how_many_times):
# formatted string literals are new in Python 3.6
print(f"what_to_print: {what_to_print}.")
return what_to_print
return None
El código anterior contiene un lambda_handler
, que es el enlace definido de AWS Lambda para que sepa dónde comenzar la ejecución. Pensar en
lambda_handler
como un main
función, como elif __name__ == "__main__":
línea condicional comúnmente utilizada en archivos Python para garantizar que se ejecute un bloque de código cuando se ejecuta un script desde la línea de comandos.
El código Python espera dos variables de entorno que son leídas por el
os
módulo con el environ.get
función. Con el what_to_print
y
how_many_times
variables establecidas por las variables de entorno, nuestro código luego imprime un mensaje cero o más veces, según la cantidad definida en el how_many_times
variable. Si un mensaje se imprime al menos una vez, la función devuelve el what_to_print
cadena, si no se imprime nada entonces None
es regresado.
Debajo del cuadro de texto de entrada de código en esta pantalla de configuración de función hay una sección para establecer pares clave-valor de variables de entorno.
Ingrese las claves nombradas what_to_print
y how_many_times
luego ingrese sus valores. Use un mensaje de cadena para what_to_print
y un número entero entero superior a 0 para how_many_times
. El manejo de errores de nuestro código Python no es muy robusto, por lo que un valor que no sea un número en el how_many_times
La variable hará que el script arroje un error cuando se ejecute debido a la conversión forzada de how_many_times
mediante el int()
función.
El código Python 3.6 y las variables de entorno ahora están en su lugar. Solo necesitamos manejar algunas configuraciones más específicas de AWS antes de que podamos probar la función Lambda.
Ejecutando nuestra función Lambda
Desplácese más allá de las variables de entorno hasta la sección «Controlador de funciones Lambda y rol», que contiene algunos elementos de configuración de funciones más necesarios.
Mantenga el controlador predeterminado configurado en lambda_function.lambda_handler
. Seleccione «Crear un nuevo rol a partir de plantillas» en el menú desplegable y, a continuación, en el campo «Nombre del rol» ingrese «dynamodb_access». En «Plantillas de políticas», seleccione «Permisos de microservicio simple».
Los «permisos de microservicio simple» permiten que nuestro Lambda acceda
AWS DynamoDB. No usaremos DynamoDB en este tutorial, pero el servicio se usa comúnmente como almacenamiento permanente o temporal para funciones de Lambda.
Nuestro código y configuración están en su lugar, así que haga clic en el botón «Siguiente» en la esquina inferior derecha de la página.
La pantalla de revisión nos muestra nuestros ajustes de configuración para asegurarnos de que seleccionamos los valores adecuados para nuestra nueva función Lambda. Desplácese hacia abajo y presione «Crear función».
El mensaje de éxito debería aparecer en la página siguiente debajo del botón «Prueba».
Haga clic en el botón «Prueba» para ejecutar Lambda. Lambda nos pedirá algunos datos para simular un evento que iniciaría nuestra función. Seleccione la plantilla de evento de muestra «Hello World», que contiene algunas claves, pero nuestro Lambda no las utilizará en su ejecución. Haga clic en el botón «Guardar y probar» en la parte inferior del modal.
Desplácese hacia abajo hasta la sección «Resultado de la ejecución» donde podemos ver nuestro resultado.
La salida del registro nos muestra el valor de retorno de nuestra función, que en esta ejecución era el mensaje de cadena de what_to_print
. También podemos ver que nuestra función de impresión produjo una salida cinco veces superior a la esperada en función de la cantidad establecida en el how_many_times
Variable ambiental.
Próximos pasos
¡Acaba de configurar, codificar y ejecutar su primera función Python 3.6 AWS Lambda! El poder real de Lambda surge cuando usa desencadenadores para su función Lambda para que se ejecute en función de los eventos que suceden. Lo veremos en el próximo tutorial.
Consulte la página de AWS Lambda Mundo Python Python para ver ejemplos y tutoriales adicionales que otras personas han compartido para Lambda con Python.
Preguntas? Contáctame a través de Twitter
@fullstackpython
o @mattmakai. También estoy en GitHub con el nombre de usuario Mattmakai.
¿Algo anda mal con esta publicación? Tenedor
la fuente de esta página en GitHub
y envíe una solicitud de extracción.
Esta entrada tiene 0 comentarios