

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
<a name="building-python-uv"></a>


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

**Topics**
+ [Prerequisiti](#building-python-uv-prerequisites)
+ [Configurazione AWS SAM per l'uso con le funzioni Python Lambda e uv](#building-python-uv-configure)
+ [Esempi](#building-python-uv-examples)

## Prerequisiti
<a name="building-python-uv-prerequisites"></a>

**Python**  
*Per installare Python, consulta Download [Python nel sito Web Python](https://www.python.org/downloads/).*

**uv**  
 AWS SAMCLIRichiede l'installazione di [https://docs.astral.sh/uv/](https://docs.astral.sh/uv/), un programma di installazione e risoluzione di pacchetti Python estremamente veloce. *Per le istruzioni di installazione, vedete [Installazione](https://docs.astral.sh/uv/getting-started/installation/) 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`.

1. Aggiungi il codice seguente al file `samconfig.toml`:

   ```
   [default.build.parameters]
   beta_features = true
   [default.sync.parameters]
   beta_features = true
   ```

1. Usa l'`--beta-features`opzione quando usi un AWS SAMCLI comando supportato. Esempio:

   ```
   $ sam build --beta-features
   ```

1. 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
<a name="building-python-uv-configure"></a>

### Passaggio 1: configura il tuo AWS SAM modello
<a name="building-python-uv-configure-template"></a>

Configura il tuo AWS SAM modello con quanto segue:
+ **BuildMethod** – `python-uv`.
+ **CodeUri**— percorso della directory del codice della funzione contenente `pyproject.toml` o`requirements.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
<a name="building-python-uv-examples"></a>

### Esempio di Hello World
<a name="building-python-uv-examples-hello"></a>

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