Creazione di funzioni Lambda in Python con in uv AWS SAM - AWS Serverless Application Model

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di funzioni Lambda in Python con in uv AWS SAM

Questa funzionalità è disponibile in anteprima AWS SAM ed è soggetta a modifiche.

Usa la AWS Serverless Application Model Command Line Interface (AWS SAMCLI) conuv, un programma di installazione e risoluzione di pacchetti Python veloce, per creare le tue funzioni Python. AWS Lambda

Prerequisiti

Python

Per installare Python, consulta Download Python nel sito Web Python.

uv

AWS SAMCLIRichiede l'installazione di uv, un programma di installazione e risoluzione di pacchetti Python estremamente veloce. Per le istruzioni di installazione, vedete Installazione nella documentazione. uv

Attiva la funzionalità AWS SAMCLI beta

Poiché questa funzionalità è disponibile in anteprima, devi attivarla utilizzando uno dei seguenti metodi:

  1. Usa la variabile di ambiente:SAM_CLI_BETA_PYTHON_UV=1.

  2. Aggiungi il codice seguente al file samconfig.toml:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Usa l'--beta-featuresopzione quando usi un AWS SAMCLI comando supportato. Esempio:

    $ sam build --beta-features
  4. Scegli l'opzione y quando AWS SAMCLI ti viene richiesto di aderire. Di seguito è riportato un esempio:

    $ 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

Configurazione AWS SAM per l'uso con le funzioni Python Lambda e uv

Passaggio 1: configura il tuo AWS SAM modello

Configura il tuo AWS SAM modello con quanto segue:

  • BuildMethodpython-uv.

  • CodeUri— percorso della directory del codice della funzione contenente pyproject.toml orequirements.txt.

  • Handler: il tuo gestore di funzioni (ad es.). app.lambda_handler

  • Runtime — Versione runtime di Python (ad es.). python3.12

Ecco un esempio di AWS SAM modello configurato:

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

Esempi

Esempio di Hello World

In questo esempio, creiamo un'applicazione Hello World di esempio usando Python uv come gestore di pacchetti.

uvpuò usare uno o l'altro pyproject.toml o requirements.txt leggere le dipendenze. Se vengono forniti entrambi, sam build leggerà da requirements.txt per verificare le dipendenze.

Di seguito è riportata la struttura della nostra applicazione Hello World:

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

pyproject.toml file

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

Nel nostro AWS SAM modello, la nostra funzione Python è definita come segue:

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

Successivamente, sam build eseguiamo la creazione della nostra applicazione e la preparazione per la distribuzione. AWS SAMCLICrea una .aws-sam directory e vi organizza i nostri artefatti di compilazione. Le nostre dipendenze dalle funzioni vengono installate utilizzando uv e archiviate in. .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

Il metodo di python-uv compilazione è configurato per funzione nella Metadata sezione. Ogni funzione del modello può utilizzare un metodo di compilazione diverso, che consente di combinare funzioni uv pip basate con funzioni basate nello stesso AWS SAM modello. Se non viene specificato alcun metodo di compilazione, pip viene utilizzato per impostazione predefinita.