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.13 |
|
Amazon Linux 2023 |
No programado |
No programado |
No programado |
Python 3.12 |
|
Amazon Linux 2023 |
No programado |
No programado |
No programado |
Python 3.11 |
|
Amazon Linux 2 |
No programado |
No programado |
No programado |
Python 3.10 |
|
Amazon Linux 2 |
No programado |
No programado |
No programado |
Python 3.9 |
|
Amazon Linux 2 |
No programado |
No programado |
No programado |
Para crear una función Python
-
Abra la consola de Lambda
. -
Seleccione Creación de función.
-
Configure los siguientes ajustes:
-
En Nombre de la función: ingrese el nombre de la función.
-
Tiempo de ejecución: elija Python 3.13.
-
-
Seleccione Creación de 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. En la sección IMPLEMENTAR, elija Implementar para actualizar el código de la función. A continuación, para ejecutar el código, seleccione Crear evento de prueba en la sección EVENTOS DE PRUEBA.
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.
Temas
- Versiones del SDK incluidas en el tiempo de ejecución
- Características experimentales de Python 3.13
- Formato de respuesta
- Cierre correcto de las extensiones
- Definir el controlador de funciones de Lambda en Python
- Uso de archivos .zip para funciones de Lambda en Python
- Implementar funciones de Python Lambda con imágenes de contenedor
- Uso de capas para funciones de Lambda en Python
- Uso del objeto de contexto Lambda para recuperar información de funciones de Python
- Registro y supervisión de las funciones de Lambda de Python
- Prueba de funciones de AWS Lambda en Python
- Instrumentación del código Python en AWS Lambda
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__}')
Características experimentales de Python 3.13
El tiempo de ejecución administrado y las imágenes base de Python 3.13 no son compatibles con las siguientes características experimentales. No puede habilitar estas características mediante indicadores de tiempo de ejecución. Para usar estas características en una función de Lambda, debe implementar un tiempo de ejecución personalizado o una imagen de contenedor que contenga su propia compilación de Python 3.13.
-
CPython con subprocesos libres
: no se puede deshabilitar el bloqueo global del intérprete. -
Compilador justo a tiempo (JIT)
: no puede habilitar el compilador JIT.
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 o tiempos de ejecución de Python posteriores, 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