

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création de fonctions Lambda en Python avec in uv AWS SAM
<a name="building-python-uv"></a>


|  | 
| --- |
| Cette fonctionnalité est en version préliminaire AWS SAM et est sujette à modification. | 

Utilisez l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) avecuv, un installateur et un résolveur rapides de paquets Python, pour créer vos AWS Lambda fonctions Python.

**Topics**
+ [Conditions préalables](#building-python-uv-prerequisites)
+ [Configuration AWS SAM à utiliser avec les fonctions Lambda en Python et uv](#building-python-uv-configure)
+ [Exemples](#building-python-uv-examples)

## Conditions préalables
<a name="building-python-uv-prerequisites"></a>

**Python**  
Pour installer Python, consultez [la section Télécharger Python](https://www.python.org/downloads/) sur le *site Web de Python*.

**uv**  
 AWS SAMCLINécessite l'installation d'[https://docs.astral.sh/uv/](https://docs.astral.sh/uv/)un programme d'installation et d'un résolveur de paquets Python extrêmement rapides. Pour les instructions d'installation, consultez la rubrique [Installation](https://docs.astral.sh/uv/getting-started/installation/) dans la *documentation uv*.

**Activer la fonctionnalité bêta de la CLI  AWS SAM**  
Cette fonctionnalité étant en cours de prévisualisation, vous devez l'activer en utilisant l'une des méthodes suivantes :  

1. Utiliser la variable d'environnement : `SAM_CLI_BETA_PYTHON_UV=1`.

1. Ajoutez ce qui suit à votre fichier `samconfig.toml` :

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

1. Utilisez l'option `--beta-features` lorsque vous utilisez une commande de la CLI  AWS SAM prise en charge. Par exemple :

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

1. Choisissez l'option `y` lorsque la CLI  AWS SAM vous y invite. Voici un exemple :

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

## Configuration AWS SAM à utiliser avec les fonctions Lambda en Python et uv
<a name="building-python-uv-configure"></a>

### Étape 1 : Configuration de votre AWS SAM modèle
<a name="building-python-uv-configure-template"></a>

Configurez votre AWS SAM modèle avec les éléments suivants :
+ **BuildMethod** – `python-uv`.
+ **CodeUri**— chemin d'accès au répertoire de votre code de fonction contenant `pyproject.toml` ou`requirements.txt`.
+ **Handler** — votre gestionnaire de fonctions (par exemple,`app.lambda_handler`).
+ **Runtime** — Version d'exécution de Python (par exemple,`python3.12`).

Voici un exemple de AWS SAM modèle configuré :

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

## Exemples
<a name="building-python-uv-examples"></a>

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

**Dans cet exemple, nous créons un exemple d'application Hello World en utilisant Python uv comme gestionnaire de packages.**

uvpeut utiliser l'un `pyproject.toml` ou l'autre ou `requirements.txt` pour lire les dépendances. Si les deux sont fournis, `sam build` je lirai depuis `requirements.txt` pour les dépendances.

Voici la structure de notre application Hello World :

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

Fichier `pyproject.toml` :

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

Dans notre AWS SAM modèle, notre fonction Python est définie comme suit :

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

Ensuite, nous exécutons `sam build` pour créer notre application et préparer son déploiement. La CLI  AWS SAM crée un répertoire `.aws-sam` et organise nos artefacts de création. Nos dépendances fonctionnelles sont installées à uv l'aide de`.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
```

**Note**  
La méthode de `python-uv` construction est configurée par fonction dans la `Metadata` section. Chaque fonction de votre modèle peut utiliser une méthode de construction différente, ce qui vous permet de mélanger des fonctions uv `pip` basées avec des fonctions basées dans le même AWS SAM modèle. Si aucune méthode de construction n'est spécifiée, elle `pip` est utilisée par défaut.