Création de fonctions Lambda en Python avec in uv AWS SAM - AWS Serverless Application Model

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

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.

Conditions préalables

Python

Pour installer Python, consultez la section Télécharger Python sur le site Web de Python.

uv

AWS SAMCLINécessite l'installation d'uvun programme d'installation et d'un résolveur de paquets Python extrêmement rapides. Pour les instructions d'installation, consultez la rubrique 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.

  2. Ajoutez ce qui suit à votre fichier samconfig.toml :

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Utilisez l'option --beta-features lorsque vous utilisez une commande de la CLI  AWS SAM prise en charge. Par exemple :

    $ sam build --beta-features
  4. 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

Étape 1 : Configuration de votre AWS SAM modèle

Configurez votre AWS SAM modèle avec les éléments suivants :

  • BuildMethodpython-uv.

  • CodeUri— chemin d'accès au répertoire de votre code de fonction contenant pyproject.toml ourequirements.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

Exemple Hello World

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.