AWS Lambda für die Produktion konfigurieren

Bereitstellen von Anwendungen auf AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Im Test lief es

  • Die Funktion bestand alle Tests
  • In der Produktion gibt es Timeouts und Throttling
  • Der Code war okay; die Konfiguration nicht

Eine serverlose Funktion, die Tests besteht, aber in der Produktion kämpft; Speicher- und Timeout-Regler werden justiert

Bereitstellen von Anwendungen auf AWS

Wichtige Lambda-Settings für die Produktion

Zentrales Lambda-Logo mit vier relevanten Produktions-Settings: Memory mit CPU-Skalierungsregler, Timeout mit Uhr, Ephemeral Storage und Concurrency mit parallelen Funktionsinstanzen

  • Memory: skaliert auch CPU und Netzwerk
  • Timeout: max. Sekunden bis die Funktion beendet wird
  • Ephemeral storage: temporärer Platz in /tmp
  • Concurrency: wie viele parallel laufen
Bereitstellen von Anwendungen auf AWS

Memory-Größe und der CPU-Zusammenhang

  • Mehr Memory = proportional mehr CPU
  • CPU-bound-Funktionen laufen mit mehr Memory schneller
  • Kürzere Dauer kann geringere Kosten bedeuten
  • Richtig dimensionieren durch Tests, nicht Raten

Kurve Speicher vs. Kosten: Dauer fällt mit mehr Speicher stark und flacht ab; Gesamtkosten bilden eine U-Form mit günstigstem Punkt in der Mitte

Bereitstellen von Anwendungen auf AWS

Concurrency: reserved vs. provisioned


Reserved concurrency

  • Begrenzt die maximale gleichzeitige Ausführung
  • Schützt Downstream-Systeme und andere Funktionen

Provisioned concurrency

  • Wärmt Instanzen vor, kein Cold Start
  • Für latenzkritische, nutzernahe Funktionen
Bereitstellen von Anwendungen auf AWS

Konfiguration und geteilten Code paketieren

  • Environment variables: konfiguriert je Umgebung
  • Layers: teilen Code und Dependencies über Funktionen hinweg
  • Extensions: laufen neben der Funktion für Tools
  • Halte Konfig aus dem Deployment-Paket heraus

Lambda-Packaging-Optionen: Umgebungsvariablen für externe Konfiguration, Layers zum Teilen gemeinsamer Bibliotheken, und Extensions neben dem Handler für Monitoring oder Secrets

Bereitstellen von Anwendungen auf AWS

Lambda mit einer VPC verbinden

Lambda ist über ENIs in privaten Subnetzen mit einer privaten VPC verbunden; eine Security Group steuert ausgehenden Zugriff; ein NAT-Gateway stellt Internetzugang bereit

  • Hänge Lambda an private Subnetze für interne Ressourcen
  • Lambda erstellt ENIs in deiner VPC
  • Security Groups steuern, was erreichbar ist
  • Für externen Zugriff braucht es NAT oder VPC Endpoint
Bereitstellen von Anwendungen auf AWS

Fehlerbehandlung mit Destinations und DLQs

  • Asynchrone Aufrufe retryen automatisch bei Fehlern
  • Lambda Destinations: routen onSuccess und onFailure
  • Dead-letter queue: fängt Events ohne Erfolg ein
  • Niemals ein fehlgeschlagenes Event still verwerfen

Asynchrone Fehlerbehandlung in Lambda: Retry-Schleife führt zu Lambda Destinations mit onSuccess- und onFailure-Zweigen; eine Dead-letter Queue sammelt Events nach allen Retries

Bereitstellen von Anwendungen auf AWS

Lass uns üben!

Bereitstellen von Anwendungen auf AWS

Preparing Video For Download...