AWS Lambda: función en Python

En este capítulo, crearemos una función AWS Lambda simple en Python y comprenderemos sus conceptos de trabajo a continuación.

Antes de comenzar a trabajar en la creación de una función Lambda en AWS, necesitamos la compatibilidad con el kit de herramientas de AWS para Python. Para ello, siga los pasos que se indican a continuación y observe las capturas de pantalla correspondientes adjuntas:

Paso 1

Inicie sesión en la consola de AWS, cree la función Lambda y seleccione el idioma como Python.

Paso 2

Ahora, haga clic en Create functione ingrese los detalles para crear un AWS Lambda simple en Python. Este código devuelve el mensajeHello from Lambda using Python y se ve como se muestra aquí -

Paso 3

Ahora, guarde los cambios y pruebe el código para ver el resultado. Debería ver la siguiente salida y registros cuando lo pruebe en la consola de AWS con el botón de prueba de la interfaz de usuario.

Etapa 4

Ahora, puede escribir código dentro de cualquier editor o un IDE para Python. Aquí, estamos usando código de Visual Studio para escribir el código. Posteriormente, debería comprimir el archivo y cargarlo en la consola de AWS.

Aquí, hemos comprimido el código y lo usamos en la consola de AWS.

Paso 5

Ahora, seleccione Upload a .ZIP file opción como se muestra a continuación -

Detalles del controlador para Python

Tenga en cuenta que el controlador debe ser el nombre del archivo seguido del nombre de la función. En el caso anterior, nuestro nombre de archivo eshellopython.py y el nombre de la función es my_handler; entonces el manejador será hellopython.my_handler.

Una vez que se realiza la carga y se guardan los cambios, en realidad muestra los detalles del archivo zip en el editor en línea en la consola de AWS Lambda. Ahora, probemos el código para ver la salida y los registros.

Ahora, comprendamos los detalles de la función Lambda utilizando el siguiente código de muestra:

def my_handler(event, context):
   return "aws lambda in python using zip file"

En el código anterior, el nombre de la función my_handler tiene 2 parámetros, evento y contexto.

Objeto de contexto en Python

El objeto de contexto proporciona detalles como el nombre de la función Lambda, el tiempo restante en milisegundos, la identificación de la solicitud, el nombre del grupo de observación en la nube, los detalles del tiempo de espera, etc.

Los métodos y atributos disponibles en el objeto de contexto se muestran en las tablas que se muestran a continuación:

No Señor Nombre y descripción del método
1

get_remaining_time_in_millis()

Este método da el tiempo restante en milisegundos hasta que la función lambda termina la función

No Señor Atributo y descripción
1

function_name

Esto le da el nombre de la función aws lambda

2

function_version

Esto da la versión de la función lambda aws ejecutando

3

invoked_function_arn

Esto le dará detalles de ARN.

4

memory_limit_in_mb

Esto muestra el límite de memoria agregado al crear la función lambda

5

aws_request_id

Esto da el ID de solicitud de AWS.

6

og_group_name

Esto le dará el nombre del grupo de Cloudwatch

7

log_stream_name

Esto le dará el nombre del flujo de registro de Cloudwatch donde se escriben los registros.

8

identity

Esto proporcionará detalles sobre el proveedor de identidad de amazon cognito cuando se usa con aws mobile sdk. Los detalles dados son los siguientes:

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

Esto mostrará detalles de la aplicación cliente cuando se usa con aws mobile sdk. Los detalles dados son los siguientes:

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom: tiene un dictado de valores personalizados de la aplicación de cliente móvil
  • client_context.env: tiene un dictado de los detalles del entorno del AWS Mobile SDK

Veamos un ejemplo funcional en Python que genera los detalles del contexto. Observe el código que se proporciona a continuación:

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

La salida correspondiente del código que se muestra arriba se da a continuación:

Registro usando Python

Para registrar información usando Python, podemos usar la función de impresión o registro disponible. Usemos el ejemplo anterior de contexto y revisemos en CloudWatch para ver si los registros están impresos. Observe el siguiente código:

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

El resultado de este código en CloudWatch es como se muestra a continuación:

Observe el siguiente ejemplo para comprender cómo usar el registrador para imprimir registros en CloudWatch:

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
   logger.info('Using logger to print messages to cloudwatch logs')
   return "aws lambda in python using zip file"

El resultado para esto será como se muestra en la captura de pantalla que se muestra a continuación:

Manejo de errores en Python para la función Lambda

En esta sección, veamos un ejemplo de trabajo que muestra cómo manejar errores en Python. Observe el fragmento de código que se proporciona aquí:

def error_handler(event, context):
   raise Exception('Error Occured!')

La pantalla de registro es como se muestra en la imagen aquí -