Creación de funciones Lambda de Python con in uv AWS SAM - AWS Serverless Application Model

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 Lambda de Python con in uv AWS SAM

Esta función se encuentra en una versión preliminar AWS SAM y está sujeta a cambios.

Utilice la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) con uv un rápido instalador y solucionador de paquetes de Python para crear sus AWS Lambda funciones de Python.

Requisitos previos

Python

Para instalar Python, consulta Descargar Python en el sitio web de Python.

uv

AWS SAMCLIRequiere la instalación de uvun instalador y solucionador de paquetes de Python extremadamente rápido. Para obtener instrucciones sobre la instalación, consulta Instalación en la Documentación de uv.

Acceda a la característica beta de la CLI de AWS SAM.

Como esta característica está en versión preliminar, debes acceder usando uno de los siguientes métodos:

  1. Usa las variables de entorno: SAM_CLI_BETA_PYTHON_UV=1.

  2. Añade lo siguiente a tu archivo samconfig.toml:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Utiliza la opción --beta-features cuando utiliza un comando de la CLI de AWS SAM compatible. Por ejemplo:

    $ sam build --beta-features
  4. Elija la opción y cuando la CLI de AWS SAM le pida que acceda. A continuación, se muestra un ejemplo:

    $ sam build Starting Build use cache Build method "python-uv" is a beta feature. Please confirm if you would like to proceed You can also enable this beta feature with "sam build --beta-features". [y/N]: y

Configuración AWS SAM para su uso con funciones Lambda de Python y uv

Paso 1: Configura tu AWS SAM plantilla

Configura tu AWS SAM plantilla con lo siguiente:

  • BuildMethodpython-uv.

  • CodeUri— ruta al directorio de códigos de funciones que contiene pyproject.toml orequirements.txt.

  • Controlador: su controlador de funciones (por ejemplo,app.lambda_handler).

  • Runtime: versión en tiempo de ejecución de Python (p. ej.,python3.12).

Este es un ejemplo de una AWS SAM plantilla configurada:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my_function Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: python-uv ...

Ejemplos

Ejemplo de Hello World

En este ejemplo, creamos un ejemplo de aplicación Hello World utilizando Python uv como gestor de paquetes.

uvpuede usar pyproject.toml o requirements.txt leer las dependencias. Si se proporcionan ambos, sam build leerá desde requirements.txt para ver las dependencias.

La siguiente es la estructura de nuestra aplicación Hello World:

hello-python-uv
├── README.md
├── events
│   └── event.json
├── hello_world
│   ├── __init__.py
│   ├── app.py
│   └── pyproject.toml
├── samconfig.toml
└── template.yaml

Archivo pyproject.toml:

[project] name = "my-function" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "requests>=2.31.0", "boto3>=1.28.0", ]

En nuestra AWS SAM plantilla, nuestra función de Python se define de la siguiente manera:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Architectures: - x86_64 Metadata: BuildMethod: python-uv

A continuación, ejecuta sam build para crear e implementar la aplicación. La CLI de AWS SAM crea un directorio de .aws-sam y organiza allí nuestros artefactos de construcción. Las dependencias de nuestras funciones se instalan uv y almacenan en.aws-sam/build/HelloWorldFunction/.

hello-python-uv$ sam build Starting Build use cache Build method "python-uv" is a beta feature. Please confirm if you would like to proceed You can also enable this beta feature with "sam build --beta-features". [y/N]: y Experimental features are enabled for this session. Visit the docs page to learn more about the AWS Beta terms https://aws.amazon.com/service-terms/. Cache is invalid, running build and copying resources for following functions (HelloWorldFunction) Building codeuri: /Users/.../hello-python-uv/hello_world runtime: python3.12 metadata: {'BuildMethod': 'python-uv'} architecture: x86_64 functions: HelloWorldFunction Running PythonUvBuilder:UvBuild Running PythonUvBuilder:CopySource Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided
nota

El método de python-uv compilación se configura por función en la Metadata sección. Cada función de la plantilla puede utilizar un método de creación diferente, lo que te permite mezclar funciones uv basadas con funciones pip basadas en la misma AWS SAM plantilla. Si no se especifica ningún método de compilación, pip se utiliza de forma predeterminada.