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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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.

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

Python 3.11

python3.11

Amazon Linux 2

Python 3.10

python3.10

Amazon Linux 2

Python 3.9

python3.9

Amazon Linux 2

Python 3.8

python3.8

Amazon Linux 2

14 de octubre de 2024

13 de noviembre de 2024

7 de enero de 2025

nota

La información de tiempo de ejecución en esta tabla se actualiza continuamente. Para obtener más información sobre el uso de los SDK de AWS en Lambda, consulte Managing AWS SDKs in Lambda functions en Serverless Land.

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

  2. Seleccione 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. Seleccione 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.

nota

La consola de Lambda utiliza AWS Cloud9 para proporcionar un entorno de desarrollo integrado en el navegador. También puede utilizar AWS Cloud9 para desarrollar funciones de Lambda en su propio entorno. Para obtener más información, consulte Trabajar con funciones de AWS Lambda utilizando AWS Toolkit en la guía del usuario de AWS Cloud9.

nota

Para comenzar con el desarrollo de aplicaciones en su entorno local, implemente una de las aplicaciones de ejemplo disponibles en el repositorio de GitHub de esta guía.

Aplicaciones de ejemplo de Lambda de ejemplo en Python
  • blank-ruby: una función de Python que muestra el uso del registro, las variables de entorno, el seguimiento de AWS X-Ray, las pruebas de unidad y el AWS SDK.

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 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.