

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.

# Bereitstellen von Lambda-Go-Funktionen mit ZIP-Dateiarchiven
<a name="golang-package"></a>

Der Code Ihrer AWS Lambda Funktion besteht aus Skripten oder kompilierten Programmen und deren Abhängigkeiten. Sie verwenden ein *Bereitstellungspaket*, um Ihren Funktionscode in Lambda bereitzustellen. Lambda unterstützt zwei Arten von Bereitstellungspaketen: Container-Images und ZIP-Dateiarchiven. 

Auf dieser Seite wird beschrieben, wie Sie eine .zip-Datei als Bereitstellungspaket für die Go-Laufzeit erstellen und dann die .zip-Datei verwenden, um Ihren Funktionscode AWS Lambda mithilfe von AWS-Managementkonsole, AWS Command Line Interface (AWS CLI) und AWS Serverless Application Model (AWS SAM) bereitzustellen.

Da Lambda POSIX-Dateiberechtigungen verwendet, müssen Sie möglicherweise [Berechtigungen für den Bereitstellungspaketordner festlegen](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-deployment-package-errors/), bevor Sie das ZIP-Dateiarchiv erstellen.

**Topics**
+ [Erstellen einer ZIP-Datei unter macOS und Linux](#golang-package-mac-linux)
+ [Erstellen einer ZIP-Datei unter Windows](#golang-package-windows)
+ [Go Lambda-Funktionen mithilfe von ZIP-Dateien erstellen und aktualisieren](#golang-package-create-function)

## Erstellen einer ZIP-Datei unter macOS und Linux
<a name="golang-package-mac-linux"></a>

Im Folgenden wird beschrieben, wie Sie Ihre ausführbare Datei mithilfe des Befehls `go build` kompilieren und ein Bereitstellungspaket in Form einer ZIP-Datei für Lambda erstellen. Stellen Sie vor dem Kompilieren Ihres Codes sicher, dass Sie das [Lambda-Paket](https://github.com/aws/aws-lambda-go/tree/master/lambda) von installiert haben. GitHub Dieses Modul stellt eine Implementierung der Laufzeitschnittstelle bereit, die die Interaktion zwischen Lambda und Ihrem Funktionscode verwaltet. Führen Sie den folgenden Befehl aus, um diese Bibliothek herunterzuladen.

```
go get github.com/aws/aws-lambda-go/lambda
```

Wenn Ihre Funktion das verwendet AWS SDK für Go, laden Sie den Standardsatz von SDK-Modulen zusammen mit allen AWS Service-API-Clients herunter, die für Ihre Anwendung erforderlich sind. Informationen zur Installation des SDK for Go finden Sie unter [Erste Schritte mit der AWS SDK für Go V2](https://github.com/aws/aws-sdk-go-v2?tab=readme-ov-file#getting-started).

### Verwenden der bereitgestellten Laufzeitfamilie
<a name="golang-package-mac-linux-al2"></a>

Go wird anders implementiert als andere verwaltete Laufzeiten. Da Go nativ zu einer ausführbaren Binärdatei kompiliert wird, ist keine spezielle Sprachlaufzeit erforderlich. Verwenden Sie eine [reine Betriebssystemlaufzeit](runtimes-provided.md) (die `provided`-Laufzeit-Familie), um Go-Funktionen für Lambda bereitzustellen.

**So erstellen Sie ein ZIP-Bereitstellungspaket (macOS/Linux)**

1. Kompilieren Sie Ihre ausführbare Datei in dem Projektverzeichnis, das die Datei `main.go` Ihrer Anwendung enthält. Beachten Sie Folgendes:
   + Die ausführbare Datei muss `bootstrap` heißen. Weitere Informationen finden Sie unter [Namenskonventionen für Handler](golang-handler.md#golang-handler-naming).
   + Legen Sie die [Befehlssatzarchitektur](foundation-arch.md) des Ziels fest. Reine Betriebssystem-Laufzeiten unterstützen sowohl arm64 als auch x86\$164.
   + Sie können das optionale Tag `lambda.norpc` verwenden, um die RPC-Komponente (Remote Procedure Call, Remoteprozeduraufruf) der Bibliothek [lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda) auszuschließen. Die RPC-Komponente ist nur erforderlich, wenn Sie die veraltete Go 1.x-Laufzeit verwenden. Durch Ausschließen der RPC-Komponente verringert sich die Größe des Bereitstellungspakets.

   arm64-Architektur:

   ```
   GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o bootstrap main.go
   ```

   x86\$164-Architektur:

   ```
   GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go
   ```

1. (Optional) Möglicherweise müssen Sie Pakete mit Einstellung von `CGO_ENABLED=0` in Linux kompilieren:

   ```
   GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o bootstrap -tags lambda.norpc main.go
   ```

   Dieser Befehl erstellt ein stabiles Binärpaket für Standard-C-Bibliotheksversionen (`libc`), was auf Lambda und anderen Geräten unterschiedlich sein kann.

1. Erstellen Sie ein Bereitstellungspaket, indem Sie die ausführbare Datei in eine ZIP-Datei packen.

   ```
   zip myFunction.zip bootstrap
   ```
**Anmerkung**  
Fügen Sie die `bootstrap`-Datei dem Stamm der ZIP-Datei hinzu.

1. Erstellen der -Funktion Beachten Sie Folgendes:
   + Die Binärdatei muss `bootstrap` benannt werden, aber der Handlername kann beliebig sein. Weitere Informationen finden Sie unter [Namenskonventionen für Handler](golang-handler.md#golang-handler-naming).
   + Die `--architectures`-Option ist nur bei Verwendung von „arm64“ erforderlich. Der Standardwert ist „x86\$164“.
   + Geben Sie für `--role` den Amazon-Ressourcennamen (ARN) der [Ausführungsrolle](lambda-intro-execution-role.md) an.

   ```
   aws lambda create-function --function-name myFunction \
   --runtime provided.al2023 --handler bootstrap \
   --architectures arm64 \
   --role arn:aws:iam::111122223333:role/lambda-ex \
   --zip-file fileb://myFunction.zip
   ```

## Erstellen einer ZIP-Datei unter Windows
<a name="golang-package-windows"></a>

Die folgenden Schritte zeigen, wie Sie das [build-lambda-zip](https://github.com/aws/aws-lambda-go/tree/main/cmd/build-lambda-zip)Tool für Windows von herunterladen GitHub, Ihre ausführbare Datei kompilieren und ein ZIP-Bereitstellungspaket erstellen.

**Anmerkung**  
Falls noch nicht geschehen, müssen Sie [git](https://git-scm.com/) installieren und die ausführbare `git`-Datei Ihrer Windows- `%PATH%`-Umgebungsvariable hinzufügen.

Stellen Sie vor dem Kompilieren Ihres Codes sicher, dass Sie die [Lambda-Bibliothek](https://github.com/aws/aws-lambda-go/tree/master/lambda) von installiert haben. GitHub Führen Sie den folgenden Befehl aus, um diese Bibliothek herunterzuladen.

```
go get github.com/aws/aws-lambda-go/lambda
```

Wenn Ihre Funktion das verwendet AWS SDK für Go, laden Sie den Standardsatz von SDK-Modulen zusammen mit allen AWS Service-API-Clients herunter, die für Ihre Anwendung erforderlich sind. Informationen zur Installation des SDK for Go finden Sie unter [Erste Schritte mit der AWS SDK für Go V2](https://aws.github.io/aws-sdk-go-v2/docs/getting-started/).

### Verwenden der bereitgestellten Laufzeitfamilie
<a name="golang-package-windows-al2"></a>

Go wird anders implementiert als andere verwaltete Laufzeiten. Da Go nativ zu einer ausführbaren Binärdatei kompiliert wird, ist keine spezielle Sprachlaufzeit erforderlich. Verwenden Sie eine [reine Betriebssystemlaufzeit](runtimes-provided.md) (die `provided`-Laufzeit-Familie), um Go-Funktionen für Lambda bereitzustellen.

**So erstellen Sie ein ZIP-Bereitstellungspaket (Windows)**

1. Laden Sie das **build-lambda-zip**Tool von herunter GitHub.

   ```
   go install github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
   ```

1. Verwenden Sie das Tool aus Ihrer `GOPATH`, um eine ZIP-Datei zu erstellen. Bei einer Go-Standardinstallation befindet sich das Tool in der Regel unter `%USERPROFILE%\Go\bin`. Navigieren Sie andernfalls an den Installationsort der Go-Laufzeit und führen Sie einen der folgenden Schritte aus:

------
#### [ cmd.exe ]

   Verwenden Sie in „cmd.exe“ je nach [Befehlssatzarchitektur](foundation-arch.md) des Ziels eine der folgenden Optionen. Reine Betriebssystem-Laufzeiten unterstützen sowohl arm64 als auch x86\$164.

   Sie können das optionale Tag `lambda.norpc` verwenden, um die RPC-Komponente (Remote Procedure Call, Remoteprozeduraufruf) der Bibliothek [lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda) auszuschließen. Die RPC-Komponente ist nur erforderlich, wenn Sie die veraltete Go 1.x-Laufzeit verwenden. Durch Ausschließen der RPC-Komponente verringert sich die Größe des Bereitstellungspakets.

**Example für die x86\$164-Architektur**  

   ```
   set GOOS=linux
   set GOARCH=amd64
   set CGO_ENABLED=0
   go build -tags lambda.norpc -o bootstrap main.go
   %USERPROFILE%\Go\bin\build-lambda-zip.exe -o myFunction.zip bootstrap
   ```

**Example für die arm64-Architektur**  

   ```
   set GOOS=linux
   set GOARCH=arm64
   set CGO_ENABLED=0
   go build -tags lambda.norpc -o bootstrap main.go
   %USERPROFILE%\Go\bin\build-lambda-zip.exe -o myFunction.zip bootstrap
   ```

------
#### [ PowerShell ]

   Führen Sie in PowerShell, abhängig von Ihrer [Ziel-Befehlssatzarchitektur](foundation-arch.md), einen der folgenden Schritte aus. Reine Betriebssystem-Laufzeiten unterstützen sowohl arm64 als auch x86\$164.

   Sie können das optionale Tag `lambda.norpc` verwenden, um die RPC-Komponente (Remote Procedure Call, Remoteprozeduraufruf) der Bibliothek [lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda) auszuschließen. Die RPC-Komponente ist nur erforderlich, wenn Sie die veraltete Go 1.x-Laufzeit verwenden. Durch Ausschließen der RPC-Komponente verringert sich die Größe des Bereitstellungspakets.

   x86\$164-Architektur:

   ```
   $env:GOOS = "linux"
   $env:GOARCH = "amd64"
   $env:CGO_ENABLED = "0"
   go build -tags lambda.norpc -o bootstrap main.go
   ~\Go\Bin\build-lambda-zip.exe -o myFunction.zip bootstrap
   ```

   arm64-Architektur:

   ```
   $env:GOOS = "linux"
   $env:GOARCH = "arm64"
   $env:CGO_ENABLED = "0"
   go build -tags lambda.norpc -o bootstrap main.go
   ~\Go\Bin\build-lambda-zip.exe -o myFunction.zip bootstrap
   ```

------

1. Erstellen der -Funktion Beachten Sie Folgendes:
   + Die Binärdatei muss `bootstrap` benannt werden, aber der Handlername kann beliebig sein. Weitere Informationen finden Sie unter [Namenskonventionen für Handler](golang-handler.md#golang-handler-naming).
   + Die `--architectures`-Option ist nur bei Verwendung von „arm64“ erforderlich. Der Standardwert ist „x86\$164“.
   + Geben Sie für `--role` den Amazon-Ressourcennamen (ARN) der [Ausführungsrolle](lambda-intro-execution-role.md) an.

   ```
   aws lambda create-function --function-name myFunction \
   --runtime provided.al2023 --handler bootstrap \
   --architectures arm64 \
   --role arn:aws:iam::111122223333:role/lambda-ex \
   --zip-file fileb://myFunction.zip
   ```

## Go Lambda-Funktionen mithilfe von ZIP-Dateien erstellen und aktualisieren
<a name="golang-package-create-function"></a>

 Nach der Erstellung Ihres ZIP-Bereitstellungspakets können Sie es verwenden, um eine neue Lambda-Funktion zu erstellen oder eine vorhandene zu aktualisieren. Sie können Ihr .zip-Paket mithilfe der Lambda-Konsole, der und der AWS Command Line Interface Lambda-API bereitstellen. Sie können Lambda-Funktionen auch mit AWS Serverless Application Model (AWS SAM) und CloudFormation erstellen und aktualisieren. 

Die maximale Größe eines ZIP-Bereitstellungspakets für Lambda beträgt 250 MB (entpackt). Beachten Sie, dass dieser Grenzwert für die kombinierte Größe aller hochgeladenen Dateien gilt, einschließlich aller Lambda-Ebenen.

Die Lambda-Laufzeit benötigt die Berechtigung zum Lesen der Dateien in Ihrem Bereitstellungspaket. In der oktalen Schreibweise von Linux-Berechtigungen benötigt Lambda 644 Berechtigungen für nicht ausführbare Dateien (rw-r--r--) und 755 Berechtigungen () für Verzeichnisse und ausführbare Dateien. rwxr-xr-x

Verwenden Sie unter Linux und MacOS den `chmod`-Befehl, um Dateiberechtigungen für Dateien und Verzeichnisse in Ihrem Bereitstellungspaket zu ändern. Um beispielsweise einer nicht ausführbaren Datei die richtigen Berechtigungen zu geben, führen Sie den folgenden Befehl aus.

```
chmod 644 <filepath>
```

Informationen zum Ändern von Dateiberechtigungen in Windows finden Sie unter [Festlegen, Anzeigen, Ändern oder Entfernen von Berechtigungen für ein Objekt](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731667(v=ws.10)) in der Microsoft-Windows-Dokumentation.

**Anmerkung**  
Wenn Sie Lambda nicht die Berechtigungen gewähren, die es für den Zugriff auf Verzeichnisse in Ihrem Bereitstellungspaket benötigt, setzt Lambda die Berechtigungen für diese Verzeichnisse auf 755 (). rwxr-xr-x

### Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien unter Verwendung der Konsole
<a name="golang-package-create-console"></a>

 Eine neue Funktion müssen Sie zuerst in der Konsole erstellen und dann Ihr ZIP-Archiv hochladen. Zum Aktualisieren einer bestehenden Funktion öffnen Sie die Seite für Ihre Funktion und gehen dann genauso vor, um Ihre aktualisierte ZIP-Datei hinzuzufügen. 

 Bei einer ZIP-Datei mit unter 50 MB können Sie eine Funktion erstellen oder aktualisieren, indem Sie die Datei direkt von Ihrem lokalen Computer hochladen. Bei ZIP-Dateien mit einer Größe von mehr als 50 MB müssen Sie Ihr Paket zuerst in einen Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket mithilfe von finden Sie unter [Erste Schritte mit Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html). AWS-Managementkonsole Informationen zum Hochladen von Dateien mit dem AWS CLI finden Sie unter [Objekte verschieben](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) im *AWS CLI Benutzerhandbuch*. 

**Anmerkung**  
Sie können eine vorhandene Container-Image-Funktion nicht konvertieren, um ein ZIP-Archiv zu verwenden. Sie müssen eine neue Funktion erstellen.

**So erstellen Sie eine neue Funktion (Konsole)**

1. Öffnen Sie die [Funktionsseite](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole und wählen Sie **Funktion erstellen** aus.

1. Wählen Sie **Author from scratch** aus.

1. Führen Sie unter **Basic information** (Grundlegende Informationen) die folgenden Schritte aus:

   1. Geben Sie als **Funktionsname** den Namen Ihrer Funktion ein.

   1. Wählen Sie unter **Runtime (Laufzeit)** `provided.al2023` aus.

1. (Optional) Erweitern Sie unter **Berechtigungen** die Option **Standardausführungsrolle ändern**. Sie können eine neue **Ausführungsrolle** erstellen oder eine vorhandene Rolle verwenden.

1. Wählen Sie **Funktion erstellen**. Lambda erstellt eine grundlegende „Hello World“-Funktion mit der von Ihnen gewählten Laufzeit.

**So laden Sie ein ZIP-Archiv von Ihrem lokalen Computer hoch (Konsole)**

1. Wählen Sie auf der [Funktionsseite](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole die Funktion aus, für die Sie die ZIP-Datei hochladen möchten.

1. Wählen Sie die Registerkarte **Code** aus.

1. Wählen Sie im Bereich **Codequelle** die Option **Hochladen von** aus.

1. Wählen Sie die **ZIP-Datei** aus.

1. Laden Sie die ZIP-Datei wie folgt hoch:

   1. Wählen Sie **Hochladen** und dann Ihre ZIP-Datei in der Dateiauswahl aus.

   1. Klicken Sie auf **Open**.

   1. Wählen Sie **Speichern**.

**So laden Sie ein ZIP-Archiv aus einem Amazon-S3-Bucket hoch (Konsole)**

1. Wählen Sie auf der [Funktionsseite](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole die Funktion aus, für die Sie eine neue ZIP-Datei hochladen möchten.

1. Wählen Sie die Registerkarte **Code** aus.

1. Wählen Sie im Bereich **Codequelle** die Option **Hochladen von** aus.

1. Wählen Sie den **Amazon-S3-Speicherort** aus.

1. Fügen Sie die Amazon-S3-Link-URL Ihrer ZIP-Datei ein und wählen Sie **Speichern** aus.

### Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien mithilfe der AWS CLI
<a name="golang-package-create-cli"></a>

 Sie können die [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) verwenden, um eine neue Funktion zu erstellen oder eine vorhandene unter Verwendung einer ZIP-Datei zu aktualisieren. Verwenden Sie die [Erstellungsfunktion und](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html) die [update-function-code](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html)Befehle, um Ihr .zip-Paket bereitzustellen. Wenn Ihre ZIP-Datei kleiner als 50 MB ist, können Sie das ZIP-Paket von einem Dateispeicherort auf Ihrem lokalen Build-Computer hochladen. Bei größeren Dateien müssen Sie Ihr ZIP-Paket aus einem Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3 S3-Bucket mithilfe von finden Sie unter [Objekte verschieben](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) im *AWS CLI Benutzerhandbuch*. AWS CLI

**Anmerkung**  
Wenn Sie Ihre ZIP-Datei mithilfe von aus einem Amazon S3 S3-Bucket hochladen AWS CLI, muss sich der Bucket im selben Verzeichnis befinden AWS-Region wie Ihre Funktion.

 Um eine neue Funktion mithilfe einer .zip-Datei mit dem zu erstellen AWS CLI, müssen Sie Folgendes angeben: 
+ Den Namen Ihrer Funktion (`--function-name`)
+ Die Laufzeit Ihrer Funktion (`--runtime`)
+ Den Amazon-Ressourcennamen (ARN) der [Ausführungsrolle](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) der Funktion (`--role`).
+ Den Namen der Handler-Methode in Ihrem Funktionscode (`--handler`)

 Sie müssen auch den Speicherort Ihrer ZIP-Datei angeben. Befindet sich Ihre ZIP-Datei in einem Ordner auf Ihrem lokalen Build-Computer, verwenden Sie die `--zip-file`-Option, um den Dateipfad anzugeben, wie im folgenden Beispielbefehl gezeigt. 

```
aws lambda create-function --function-name myFunction \
--runtime provided.al2023 --handler bootstrap \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--zip-file fileb://myFunction.zip
```

 Zur Angabe des Speicherorts der ZIP-Datei in einem Amazon-S3-Bucket verwenden Sie die im folgenden Beispielbefehl gezeigte `--code`-Option. Sie müssen den `S3ObjectVersion`-Parameter nur für versionierte Objekte verwenden. 

```
aws lambda create-function --function-name myFunction \
--runtime provided.al2023 --handler bootstrap \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion
```

 Um eine vorhandene Funktion mit der CLI zu aktualisieren, geben Sie den Namen Ihrer Funktion unter Verwendung des `--function-name`-Parameters an. Sie müssen auch den Speicherort der ZIP-Datei angeben, die Sie zum Aktualisieren Ihres Funktionscodes verwenden möchten. Befindet sich Ihre ZIP-Datei in einem Ordner auf Ihrem lokalen Build-Computer, verwenden Sie die `--zip-file`-Option, um den Dateipfad anzugeben, wie im folgenden Beispielbefehl gezeigt. 

```
aws lambda update-function-code --function-name myFunction \
--zip-file fileb://myFunction.zip
```

 Zur Angabe des Speicherorts der ZIP-Datei in einem Amazon-S3-Bucket verwenden Sie die im folgenden Beispielbefehl gezeigten `--s3-bucket`- und `--s3-key`-Optionen. Sie müssen den `--s3-object-version`-Parameter nur für versionierte Objekte verwenden. 

```
aws lambda update-function-code --function-name myFunction \
--s3-bucket amzn-s3-demo-bucket --s3-key myFileName.zip --s3-object-version myObject Version
```

### Erstellen und Aktualisieren von Funktionen mit ZIP-Dateien unter Verwendung der Lambda-API
<a name="golang-package-create-api"></a>

 Um Funktionen zu erstellen und zu konfigurieren, die ein ZIP-Dateiarchiv verwenden, verwenden Sie die folgenden API-Operationen: 
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)

### Funktionen mit ZIP-Dateien erstellen und aktualisieren mit AWS SAM
<a name="golang-package-create-sam"></a>

 Das AWS Serverless Application Model (AWS SAM) ist ein Toolkit, das dabei hilft, den Prozess der Erstellung und Ausführung serverloser Anwendungen zu optimieren. AWS Sie definieren die Ressourcen für Ihre Anwendung in einer YAML- oder JSON-Vorlage und verwenden die AWS SAM Befehlszeilenschnittstelle (AWS SAM CLI), um Ihre Anwendungen zu erstellen, zu verpacken und bereitzustellen. Wenn Sie eine Lambda-Funktion aus einer AWS SAM Vorlage erstellen, AWS SAM wird automatisch ein ZIP-Bereitstellungspaket oder ein Container-Image mit Ihrem Funktionscode und allen von Ihnen angegebenen Abhängigkeiten erstellt. Weitere Informationen zur Verwendung AWS SAM zum Erstellen und Bereitstellen von Lambda-Funktionen finden Sie unter [Erste Schritte mit AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html) im *AWS Serverless Application Model Entwicklerhandbuch*.

Sie können es auch verwenden AWS SAM , um eine Lambda-Funktion mithilfe eines vorhandenen ZIP-Dateiarchivs zu erstellen. Um eine Lambda-Funktion zu erstellen AWS SAM, können Sie Ihre ZIP-Datei in einem Amazon S3 S3-Bucket oder in einem lokalen Ordner auf Ihrem Build-Computer speichern. Anweisungen zum Hochladen einer Datei in einen Amazon S3 S3-Bucket mithilfe von finden Sie unter [Objekte verschieben](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) im *AWS CLI Benutzerhandbuch*. AWS CLI

 In Ihrer AWS SAM Vorlage spezifiziert die `AWS::Serverless::Function` Ressource Ihre Lambda-Funktion. Legen Sie in dieser Ressource die folgenden Eigenschaften fest, um eine Funktion zu erstellen, die als ZIP-Datei-Archiv definiert ist: 
+ `PackageType` – festlegen auf `Zip`
+ `CodeUri`- auf die Amazon S3 S3-URI, den Pfad zum lokalen Ordner oder [FunctionCode](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-functioncode.html)Objekt des Funktionscodes gesetzt
+ `Runtime` – festlegen auf die gewünschte Laufzeit

 Wenn Ihre ZIP-Datei größer als 50 MB ist, müssen Sie sie nicht zuerst in einen Amazon S3 S3-Bucket hochladen. AWS SAM AWS SAM kann .zip-Pakete bis zur maximal zulässigen Größe von 250 MB (entpackt) von einem Speicherort auf Ihrem lokalen Build-Computer hochladen. 

 *Weitere Informationen zum Bereitstellen von Funktionen mithilfe der ZIP-Datei in finden Sie [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)im AWS SAM Entwicklerhandbuch.AWS SAM * 

**Beispiel: Wird verwendet AWS SAM , um eine Go-Funktion mit der bereitgestellten.al2023 zu erstellen**

1. Erstellen Sie eine AWS SAM Vorlage mit den folgenden Eigenschaften:
   + **BuildMethod**: Gibt den Compiler für Ihre Anwendung an. Verwenden Sie `go1.x`.
   + **Runtime**: Verwenden Sie `provided.al2023`.
   + **CodeUri**: Geben Sie den Pfad zu Ihrem Code ein.
   + **Architectures**: Verwenden Sie `[arm64]` für die arm64-Architektur. Verwenden Sie für die x86\$164-Befehlssatzarchitektur die Option `[amd64]` oder entfernen Sie die Eigenschaft `Architectures`.  
**Example template.yaml**  

   ```
   AWSTemplateFormatVersion: '2010-09-09'
   Transform: 'AWS::Serverless-2016-10-31'
   Resources:
     HelloWorldFunction:
       Type: AWS::Serverless::Function
       Metadata:
         BuildMethod: go1.x
       Properties:
         CodeUri: hello-world/ # folder where your main program resides
         Handler: bootstrap
         Runtime: provided.al2023
         Architectures: [arm64]
   ```

1. Verwenden Sie den Befehl [sam build](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html), um die ausführbare Datei zu kompilieren.

   ```
   sam build
   ```

1. Verwenden Sie den Befehl [sam deploy](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html), um die Funktion in Lambda bereitzustellen.

   ```
   sam deploy --guided
   ```

### Funktionen mit ZIP-Dateien erstellen und aktualisieren mit CloudFormation
<a name="golang-package-create-cfn"></a>

 Sie können verwenden CloudFormation , um eine Lambda-Funktion mithilfe eines ZIP-Dateiarchivs zu erstellen. Um eine Lambda-Funktion aus einer ZIP-Datei zu erstellen, müssen Sie Ihre Datei zunächst in einen Amazon-S3-Bucket hochladen. Anweisungen zum Hochladen einer Datei in einen Amazon S3 S3-Bucket mithilfe von finden Sie unter [Objekte verschieben](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) im *AWS CLI Benutzerhandbuch. AWS CLI*

In Ihrer CloudFormation Vorlage spezifiziert die `AWS::Lambda::Function` Ressource Ihre Lambda-Funktion. Legen Sie in dieser Ressource die folgenden Eigenschaften fest, um eine Funktion zu erstellen, die als ZIP-Datei-Archiv definiert ist:
+ `PackageType` – festlegen auf `Zip`
+ `Code` – Geben Sie den Namen des Amazon-S3-Buckets und den ZIP-Dateinamen in die Felder `S3Bucket` und `S3Key` ein
+ `Runtime` – festlegen auf die gewünschte Laufzeit

 Die CloudFormation generierte ZIP-Datei darf 4 MB nicht überschreiten. *Weitere Informationen zum Bereitstellen von Funktionen mithilfe der ZIP-Datei finden Sie [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)im CloudFormation Benutzerhandbuch. CloudFormation* 