

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


|  | 
| --- |
| 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](#building-python-uv-prerequisites)
+ [Konfiguration AWS SAM für die Verwendung mit Python-Lambda-Funktionen und uv](#building-python-uv-configure)
+ [Beispiele](#building-python-uv-examples)

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

**Python**  
Informationen zur Installation von Python finden [Sie unter Python herunterladen](https://www.python.org/downloads/) auf der *Python-Website*.

**uv**  
Das AWS SAMCLI erfordert die Installation von [https://docs.astral.sh/uv/](https://docs.astral.sh/uv/), einem extrem schnellen Python-Paket-Installer und Resolver. Installationsanweisungen finden Sie in der *uvDokumentation* unter [Installation](https://docs.astral.sh/uv/getting-started/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`.

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

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

1. Verwenden Sie die `--beta-features` Option, wenn Sie einen unterstützten AWS SAMCLI Befehl verwenden. Beispiel:

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

1. Wählen Sie die Option`y`, 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
<a name="building-python-uv-configure"></a>

### Schritt 1: Konfiguriere deine AWS SAM Vorlage
<a name="building-python-uv-configure-template"></a>

Konfigurieren Sie Ihre AWS SAM Vorlage wie folgt:
+ **BuildMethod** – `python-uv`.
+ **CodeUri**— Pfad zu Ihrem Funktionscode-Verzeichnis, das `pyproject.toml` oder enthält`requirements.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
<a name="building-python-uv-examples"></a>

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

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

uvkann entweder `pyproject.toml` oder verwenden`requirements.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.