Python-Lambda-Funktionen mit uv in erstellen AWS SAM - AWS Serverless Application Model

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Python-Lambda-Funktionen mit uv in erstellen AWS SAM

Diese Funktion befindet sich in der Vorschauversion für AWS SAM und kann sich ändern.

Verwenden Sie die AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mituv, einem schnellen Installationsprogramm und Resolver für Python-Pakete, um Ihre AWS Lambda Python-Funktionen zu erstellen.

Voraussetzungen

Python

Informationen zur Installation von Python finden Sie unter Python herunterladen auf der Python-Website.

uv

Das AWS SAMCLI erfordert die Installation von uv, einem extrem schnellen Python-Paket-Installer und Resolver. Installationsanweisungen finden Sie in der uvDokumentation unter Installation.

Melden Sie sich für die AWS SAMCLI Beta-Funktion an

Da es sich bei dieser Funktion um eine Vorschauversion handelt, müssen Sie sich mit einer der folgenden Methoden anmelden:

  1. Verwenden Sie die Umgebungsvariable:SAM_CLI_BETA_PYTHON_UV=1.

  2. Fügen Sie der samconfig.toml-Datei Folgendes hinzu:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Verwenden Sie die --beta-features Option, wenn Sie einen unterstützten AWS SAMCLI Befehl verwenden. Beispiel:

    $ sam build --beta-features
  4. Wählen Sie die Optiony, wenn Sie AWS SAMCLI aufgefordert werden, sich anzumelden. Im Folgenden wird ein Beispiel gezeigt:

    $ 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

Konfiguration AWS SAM für die Verwendung mit Python-Lambda-Funktionen und uv

Schritt 1: Konfiguriere deine AWS SAM Vorlage

Konfigurieren Sie Ihre AWS SAM Vorlage wie folgt:

  • BuildMethodpython-uv.

  • CodeUri— Pfad zu Ihrem Funktionscode-Verzeichnis, das pyproject.toml oder enthältrequirements.txt.

  • Handler — Ihr Funktionshandler (z. B.app.lambda_handler).

  • Runtime — Python-Laufzeitversion (z. B.python3.12).

Hier ist ein Beispiel für eine konfigurierte AWS SAM Vorlage:

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

Beispiele

Beispiel Hello World

In diesem Beispiel erstellen wir eine Hello World-Beispielanwendung mit Python uv als Paketmanager.

uvkann entweder pyproject.toml oder verwendenrequirements.txt, um Abhängigkeiten zu lesen. Wenn beide angegeben sind, sam build wird aus requirements.txt den Abhängigkeiten gelesen.

Das Folgende ist die Struktur unserer Hello World-Anwendung:

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

pyproject.toml-Datei:

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

In unserer AWS SAM Vorlage ist unsere Python-Funktion wie folgt definiert:

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

Als Nächstes erstellen wir sam build unsere Anwendung und bereiten sie auf die Bereitstellung vor. Das AWS SAMCLI erstellt ein .aws-sam Verzeichnis und organisiert dort unsere Build-Artefakte. Unsere Funktionsabhängigkeiten werden unter installiert uv und gespeichert. .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
Anmerkung

Die python-uv Build-Methode wird pro Funktion im Metadata Abschnitt konfiguriert. Jede Funktion in Ihrer Vorlage kann eine andere Build-Methode verwenden, sodass Sie uv basierte Funktionen mit pip basierten Funktionen in derselben AWS SAM Vorlage kombinieren können. Wenn keine Build-Methode angegeben pip ist, wird standardmäßig verwendet.