Creación de funciones de Lambda con Python - AWS Lambda

Creación de funciones de Lambda con Python

Puede ejecutar código Python en AWS Lambda. Lambda ofrece tiempos de ejecución para Python que ejecutan su código para procesar eventos. El código se ejecuta en un entorno que incluye el SDK for Python (Boto3), con credenciales de un rol de AWS Identity and Access Management (IAM) que usted administre. Para obtener más información sobre las versiones del SDK incluidas en los tiempos de ejecución de Python, consulte Versiones del SDK incluidas en el tiempo de ejecución.

Lambda admite los siguientes tiempos de ejecución de Python.

Nombre Identificador Sistema operativo Fecha de baja Bloqueo de la función Crear Bloqueo de la función Actualizar

Python 3.12

python3.12

Amazon Linux 2023

No programado

No programado

No programado

Python 3.11

python3.11

Amazon Linux 2

No programado

No programado

No programado

Python 3.10

python3.10

Amazon Linux 2

No programado

No programado

No programado

Python 3.9

python3.9

Amazon Linux 2

No programado

No programado

No programado

Para crear una función Python
  1. Abra la consola de Lambda.

  2. Elija Crear función.

  3. Configure los siguientes ajustes:

    • En Nombre de la función: ingrese el nombre de la función.

    • Tiempo de ejecución: elija Python 3.12.

  4. Elija Crear función.

  5. Para configurar un evento de prueba, seleccione Prueba.

  6. En Nombre del evento, escriba test.

  7. Elija Guardar cambios.

  8. Elija Test (Probar) para invocar la función.

La consola crea una función de Lambda con un único archivo de origen llamado lambda_function. Puede editar este archivo y agregar más archivos en el editor de código integrado. Para guardar los cambios, elija Guardar. A continuación, para ejecutar el código, elija Pruebas.

Su función de Lambda tiene un grupo de registros de Registros de CloudWatch. El tiempo de ejecución de la función envía detalles de cada invocación a Registros de CloudWatch. Se transmite cualquier registro que su función genere durante la invocación. Si su función devuelve un error, Lambda formatea el error y lo devuelve al invocador.

Versiones del SDK incluidas en el tiempo de ejecución

La versión del AWS SDK incluida en el tiempo de ejecución de Python depende de la versión del tiempo de ejecución y de su Región de AWS. Para encontrar la versión del SDK incluida en el tiempo de ejecución que está utilizando, cree una función de Lambda con el código siguiente.

import boto3 import botocore def lambda_handler(event, context): print(f'boto3 version: {boto3.__version__}') print(f'botocore version: {botocore.__version__}')

Formato de respuesta

En los tiempos de ejecución de Python 3.12 y posteriores, las funciones devuelven caracteres Unicode como parte de su respuesta JSON. Los tiempos de ejecución de Python anteriores devolvían secuencias con escape para caracteres Unicode en las respuestas. Por ejemplo, en Python 3.11, si devuelve una cadena Unicode como “こんにちは”, escapa a los caracteres Unicode y devuelve "\u3053\u3093\u306b\u3061\u306f". El tiempo de ejecución de Python 3.12 devuelve el “こんにちは” original.

El uso de respuestas Unicode reduce el tamaño de las respuestas de Lambda, lo que facilita el ajuste de respuestas más grandes al tamaño máximo de carga útil de 6 MB para las funciones sincrónicas. En el ejemplo anterior, la versión con escape es de 32 bytes, en comparación con los 17 bytes de la cadena Unicode.

Cuando actualice a Python 3.12, es posible que tenga que ajustar el código para tener en cuenta el nuevo formato de respuesta. Si el llamador espera un escape de Unicode, debe agregar código a la función de retorno para escapar del Unicode manualmente, o ajustar el llamador para que pueda manejar la devolución de Unicode.

Cierre correcto de las extensiones

Los tiempos de ejecución de Python 3.12 y posteriores ofrecen capacidades mejoradas de cierre correcto para funciones con extensiones externas. Cuando Lambda cierra un entorno de ejecución, envía una señal SIGTERM al tiempo de ejecución y, a continuación, un evento SHUTDOWN a cada extensión externa registrada. Puede atrapar la señal SIGTERM en la función de Lambda y limpiar los recursos, como las conexiones a bases de datos, creados por la función.

Para obtener más información sobre el ciclo de vida del entorno de ejecución, consulte Comprender el ciclo de vida del entorno de ejecución de Lambda. Para ver ejemplos de cómo usar un cierre elegante con extensiones, consulte el repositorio GitHub de muestras de AWS.