Serverless-Funktionen in Go: AWS Lambda mit Golang

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Serverless-Funktionen in Go: AWS Lambda — Vollständiger Leitfaden



Die Serverless-Architektur gewinnt bei Entwicklern aufgrund ihrer Skalierbarkeit, geringeren Betriebskosten und dem Wegfall der Serververwaltung weiter an Beliebtheit. AWS Lambda ist einer der Marktführer in diesem Bereich. Was aber, wenn man die Leistungsfähigkeit von Serverless mit der Performance und Einfachheit von Go (Golang) kombiniert? In diesem Artikel werden wir uns ansehen, wie man Serverless-Funktionen in Go für AWS Lambda erstellt, konfiguriert und bereitstellt. Sie erfahren mehr über die Vorteile dieses Ansatzes, schreiben Ihre erste Funktion und erhalten praktische Tipps zur Optimierung.



Warum Go (Golang) ideal für AWS Lambda ist?



Die Wahl der Programmiersprache für Serverless-Funktionen ist entscheidend. Go (Golang) bietet eine Reihe einzigartiger Vorteile, die es zu einem der besten Kandidaten für die Arbeit mit AWS Lambda machen:



  • Schneller Kaltstart: Im Gegensatz zu interpretierten Sprachen (Python, Node.js) wird Go in eine native Binärdatei kompiliert. Die Startzeit (Cold Start) wird in Millisekunden gemessen, was für APIs und Microservices entscheidend ist.
  • Geringer Speicherverbrauch: Go-Anwendungen sind leichtgewichtig und nutzen Speicher effizient, was sich direkt auf die Kosten für die Funktionsausführung auswirkt (Sie zahlen für den zugewiesenen Speicher).
  • Einfache Bereitstellung: Sie kompilieren eine einzige Binärdatei, laden sie in AWS Lambda hoch, und sie funktioniert ohne externe Abhängigkeiten (außer der Standardbibliothek). Keine virtuellen Umgebungen oder node_modules.
  • Hohe Leistung: Go ist eine kompilierte Sprache mit integrierter Unterstützung für Nebenläufigkeit (Goroutinen). Dies ermöglicht die Verarbeitung Tausender Anfragen innerhalb einer einzigen Lambda-Funktion ohne nennenswerten Overhead.
  • Hervorragende Integration mit AWS SDK: Das offizielle AWS SDK für Go (v2) bietet bequeme und typisierte Clients für alle AWS-Dienste.


Erstellen der ersten Serverless-Funktion in Go für AWS Lambda



Lassen Sie uns eine einfache Funktion schreiben, die eine HTTP-Anfrage über eine AWS Lambda Function URL oder API Gateway verarbeitet. Dazu benötigen wir das Paket github.com/aws/aws-lambda-go.



Schritt 1: Projekt initialisieren und Abhängigkeiten installieren



mkdir my-lambda-gocd my-lambda-gogo mod init my-lambda-gogo get github.com/aws/aws-lambda-go/lambdago get github.com/aws/aws-lambda-go/events


Schritt 2: Funktionscode (main.go)



Diese Funktion nimmt eine JSON-Anfrage mit einem Benutzernamen entgegen und gibt eine Begrüßung zurück.



package main

import (\t"context"\t"encoding/json"\t"fmt"\t"log"

\t"github.com/aws/aws-lambda-go/events"\t"github.com/aws/aws-lambda-go/lambda")

// Request struct für die eingehende Anfragetype Request struct {\tName string `json:"name"`}

// Response struct für die Antworttype Response struct {\tMessage string `json:"message"`}

func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {\tvar req Request

\t// Parse den Anfragebody\tif err := json.Unmarshal([]byte(request.Body), &req); err != nil {\t\tlog.Printf("Fehler beim Parsen der Anfrage: %v", err)\t\treturn events.APIGatewayProxyResponse{\t\t\tStatusCode: 400,\t\t\tBody: `{"error":"Ungültiges JSON"}`,\t\t\tHeaders: map[string]string{"Content-Type": "application/json"},\t\t}, nil\t}

\t// Antwort erstellen\tmessage := fmt.Sprintf("Hallo, %s! Willkommen bei Serverless Go.", req.Name)\tresp := Response{Message: message}

\tjsonResp, _ := json.Marshal(resp)

\treturn events.APIGatewayProxyResponse{\t\tStatusCode: 200,\t\tBody: string(jsonResp),\t\tHeaders: map[string]string{"Content-Type": "application/json"},\t}, nil}

func mai

Blogs

Buchempfehlungen