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.
Temas
Requisitos previos
- Python
-
Para instalar Python, consulta Descargar Python
en el sitio web de Python. - uv
-
AWS SAMCLIRequiere la instalación de uv
un 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:
-
Usa las variables de entorno:
SAM_CLI_BETA_PYTHON_UV=1. -
Añade lo siguiente a tu archivo
samconfig.toml:[default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true -
Utiliza la opción
--beta-featurescuando utiliza un comando de la CLI de AWS SAM compatible. Por ejemplo:$sam build --beta-features -
Elija la opción
ycuando la CLI de AWS SAM le pida que acceda. A continuación, se muestra un ejemplo:$sam buildStarting 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:
-
BuildMethod –
python-uv. -
CodeUri— ruta al directorio de códigos de funciones que contiene
pyproject.tomlorequirements.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 buildStarting 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]:yExperimental 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.