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.
Topics
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:
-
Verwenden Sie die Umgebungsvariable:
SAM_CLI_BETA_PYTHON_UV=1. -
Fügen Sie der
samconfig.toml-Datei Folgendes hinzu:[default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true -
Verwenden Sie die
--beta-featuresOption, wenn Sie einen unterstützten AWS SAMCLI Befehl verwenden. Beispiel:$sam build --beta-features -
Wählen Sie die Option
y, wenn Sie AWS SAMCLI aufgefordert werden, sich anzumelden. Im Folgenden wird ein Beispiel gezeigt:$sam buildStarting 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:
-
BuildMethod –
python-uv. -
CodeUri— Pfad zu Ihrem Funktionscode-Verzeichnis, das
pyproject.tomloder 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 buildStarting 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]:yExperimental 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.