Kurs
Erste Schritte mit AWS Lambda: Ein Schritt-für-Schritt-Tutorial
AWS Lambda ist ein leistungsstarker serverloser Rechenservice, mit dem du Code ausführen kannst, ohne die Infrastruktur zu verwalten. So kannst du dich ganz auf das Schreiben von Code konzentrieren, ohne dich um die Bereitstellung oder Wartung von Servern zu kümmern.
In diesem Lernprogramm werden wir AWS Lambda erkunden, von der Einrichtung deiner ersten Funktion bis zur Integration mit anderen AWS-Services. Ganz gleich, ob du Datenströme verarbeitest oder APIs erstellst, dieser Leitfaden hilft dir beim Einstieg in serverlose Bereitstellungen mit AWS Lambda.
Was ist AWS Lambda?
AWS Lambda ist eine serverlose Computing-Plattform von Amazon Web Services (AWS), die es Entwicklern ermöglicht, Code auszuführen, ohne Server bereitzustellen oder zu verwalten. AWS Lambda erleichtert dies, indem es Ressourcen dynamisch zuweist, um deine Funktionen nur bei Bedarf auszuführen, wobei die Abrechnung nach der Nutzung und nicht nach der vorab zugewiesenen Serverkapazität erfolgt.
Mit diesem Ansatz der Anwendungsentwicklung entfällt die Notwendigkeit, eine herkömmliche Infrastruktur einzurichten, sodass du dich ausschließlich auf das Schreiben und Bereitstellen von Code konzentrieren kannst.
AWS Lambda ist ereignisgesteuert, d.h. es wird durch bestimmte Ereignisse von anderen AWS-Services ausgelöst und ist damit ideal für den Aufbau reaktionsschneller, skalierbarer und kosteneffizienter Lösungen.
Herkömmliche Bereitstellungsmethoden erfordern die Einrichtung und Verwaltung von Servern, was mit Skalierung, Aktualisierung und Patches verbunden ist. Diese Aufgaben können zeitaufwändig, kostspielig und bei sporadischen Arbeitsbelastungen weniger effizient sein. Im Gegensatz dazueliminiert die serverloseBereitstellung diese Gemeinkosten und bietet automatische Skalierung und hohe Verfügbarkeit von Anfang an.
Merkmale von AWS Lambda
- Ereignisgesteuerte Architektur: AWS Lambda-Funktionen werden als Reaktion auf Ereignisse wie Datenänderungen, HTTP-Anfragen oder Aktualisierungen von AWS-Ressourcen aufgerufen.
- Unterstützung mehrerer Laufzeiten: Lambda unterstützt verschiedene Laufzeiten, darunter Python, Node.js, Java, Go, Ruby und .NET. Entwickler können mit der AWS Lambda Runtime API auch ihre eigene Runtime mitbringen, was sie zu einer vielseitigen Plattform für verschiedene Anwendungsfälle macht.
- Automatische Skalierbarkeit: AWS Lambda skaliert deine Anwendung automatisch je nach Bedarf. Ob du ein einzelnes Ereignis verarbeitest oder Tausende gleichzeitig, Lambda passt die Rechenressourcen dynamisch an.
- Preisgestaltung nach dem Umlageverfahren: Die Kosten werden durch die Anzahl der Anfragen und die Ausführungszeit deiner Funktionen bestimmt. Dadurch entfallen die Vorabinvestitionen und du zahlst nur für das, was du nutzt.
- Integrierte Sicherheit: Lambda arbeitetmit AWS Identity and Access Management (IAM) zusammen und sorgt für einefein abgestufte Zugriffskontrolle und sichere Interaktionen zwischen deinen Funktionen und anderen AWS-Services.
Häufige Anwendungsfälle von Lambda
- Verarbeiten von Datenströmen: AWS Lambda integriert mit Amazon Kinesis, um Streaming-Daten in Echtzeit zu verarbeitenund zu analysieren. Unterkannst du zum Beispiel IoT-Geräte überwachen oderLogdateien dynamisch verarbeiten.
- RESTful APIs bauen: Lambda-Funktionen können mit AWS API Gateway gepaart werden, um skalierbare APIs für Web- und Mobilanwendungen zu erstellen. Dieses Setup wird häufig verwendet, um die Benutzerauthentifizierung zu verwalten, Datenbanken abzufragen oder dynamische Inhalte zu erstellen.
- Arbeitsabläufe automatisieren: Automatisiere komplexe Workflows, indem du Lambda-Funktionen auf der Grundlage von Ereignissen vonrvices wie S3, DynamoDB oder CloudWatch auslöst. Du kannst zum Beispiel die Größe von Bildern, die auf S3 hochgeladen werden, ändern oder alte Datenbankeinträge automatisch archivieren.
- Ereignisbehandlung in Datenpipelines: Du kannst Lambda verwenden, um Datenereignisse in Echtzeit zu verarbeiten, z. B. neue Uploads in einen S3-Bucket zu verarbeiten, Daten vor der Speicherung umzuwandeln oder Datenströme mit externen API-Aufrufen anzureichern.
- Serverlose Backend-Verarbeitung: Lambda wird häufig verwendet, um Backend-Aufgaben wie die Validierung von Daten , ETL-Prozesse (Extrahieren, Transformieren, Laden)oder das Senden von Benachrichtigungen über Amazon SNS oder SES auszulagern.
Wie funktioniert AWS Lambda?
AWS Lambda arbeitet nach einem ereignisgesteuerten Modell, das heißt, es führt Code als Reaktion auf bestimmte Auslöser oder Ereignisse aus. Der Schlüssel zur Funktionalität von Lambda ist die Integration mit anderen AWS-Diensten und die Fähigkeit, Funktionen nach Bedarf auszuführen. Lass uns Schritt für Schritt in die Funktionsweise von AWS Lambda eintauchen:
Ein Beispiel für ein Architekturdiagramm, das Lambda und andere AWS-Kerndienste verwendet. Bildquelle: AWS.
1. Auslösen von AWS Lambda-Funktionen
AWS Lambda-Funktionen werden durch Ereignisse von verschiedenen AWS-Services oder externen Systemen ausgelöst. Häufige Beispiele für Ereignisquellen sind:
- API Gateway: Wenn ein Nutzer eine HTTP-Anfrage (z. B. eine GET- oder POST-Anfrage) an deinen API-Gateway-Endpunkt sendet, kann Lambda eine Funktion ausführen, um die Anfrage zu verarbeiten - z. B. einen RESTful-API-Endpunkt zum Anlegen eines Nutzers in einer Datenbank.
- S3 Ereignisse: Lambda-Funktionen können auf Aktionen wie das Hochladen, Löschen oder Ändern eines Objekts in einem S3-Bucket reagieren. Sie können zum Beispiel die Größe von Bildern ändern oder Dateiformate konvertieren, nachdem ein Bild in einen S3-Bucket hochgeladen wurde.
- DynamoDB-Streams: Alle Änderungen an DynamoDB-Tabellen, wie Einfügungen, Aktualisierungen oder Löschungen, können eine Lambda-Funktion auslösen. Zum Beispiel das Auslösen einer Analyse-Pipeline, wenn einer DynamoDB-Tabelle neue Zeilen hinzugefügt werden.
- Benutzerdefinierte Anwendungen: Du kannst Lambda-Funktionen direkt über SDKs, CLI oder HTTP-Anfragen aufrufen und so die Integration mit externen Systemen ermöglichen.
2. Ausführungsumgebung
Wenn ein Ereignis eine Lambda-Funktion auslöst, erstellt AWS automatisch eine Ausführungsumgebung, um den Code auszuführen. Diese Umgebung umfasst:
- Dein Funktionscode: Der Code, den du für deine spezielle Aufgabe geschrieben hast.
- Zugewiesene Ressourcen: CPU und Speicher (konfigurierbar) werden dynamisch zugewiesen, je nach Bedarf der Funktion.
- Abhängigkeiten: Alle externen Bibliotheken oder Pakete, die bei der Bereitstellung angegeben wurden, werden einbezogen.
3. Gleichzeitigkeit und Skalierung
AWS Lambda unterstützt die automatische Skalierung durch die parallele Ausführung mehrerer Instanzen deiner Funktion. Es skaliert transparent und ohne jegliche Konfiguration. So funktioniert die Gleichzeitigkeit:
- Wenn deine Funktion 100 Ereignisse gleichzeitig verarbeiten muss, erstellt Lambda so viele Ausführungsumgebungen wie nötig (bis zur Gleichzeitigkeitsgrenze).
4. Integration mit anderen AWS-Diensten
AWS Lambda lässt sich tief in die AWS-Services integrieren, um robuste End-to-End-Lösungen zu erstellen:
- Datenbank-Interaktionen: Lambda kann während der Ausführung Daten in DynamoDB oder RDS lesen/schreiben.
- Nachrichtendienste: Lambda kann Benachrichtigungen über SNS auslösen oder Nachrichten an SQS-Warteschlangen zur nachgelagerten Verarbeitung senden.
- Überwachung und Protokollierung: CloudWatch erfasst alle Protokolle, Metriken und Fehlerdetails für Lambda-Funktionen und ermöglicht es dir, Leistungsprobleme zu überwachen und zu beheben.
Jetzt können wir mit dem Einrichten deiner ersten Lambda-Funktion beginnen!
AWS Lambda einrichten
Voraussetzungen
- AWS-Konto: Stelle sicher, dass du ein aktives AWS-Kontohast. Melde dich hier an.
- IAM-Benutzer einrichten: Erstelle einen IAM-Benutzer mit Berechtigungen für AWS Lambda. Follow the IAM guide.
Einrichten der Entwicklungsumgebung
- Installiere AWS CLI: Lade die AWS CLI herunter und installiere sie. Konfiguriere sie mit deinen IAM-Anmeldedaten.
- Richte Python oder Node.js ein: Install Python oder Node.js, je nachdem, welche Laufzeit du bevorzugst. AWS Lambda unterstützt mehrere runtimes. In diesem Lernprogramm werden wir Python als Laufzeitumgebung verwenden.
Schritt 1: Zugriff auf die AWS Lambda-Konsole
- Melde dich bei der AWS Management Console an.
- Navigiere zu dem Lambda-Dienst.
Navigations-Dashboard in der AWS-Konsole.
Klick auf Lambda im Navigationsmenü um das Dashboard zu sehen:
AWS Lambda Dashboard in der AWS Console.
Schritt 2: Eine neue Funktion erstellen
- Klicke auf Funktion erstellen.
- Wähle "Autor von Grund auf".
- Gib einen Namen für deine Funktion an.
- Wähle eine Laufzeit (z. B. Python 3.11).
- Klicken Sie auf die Schaltfläche Funktion erstellen Schaltfläche.
Erstelle eine neue AWS Lambda-Funktion.
Es dauert ein paar Sekunden. Sobald die Funktion erstellt ist, siehst du oben eine Erfolgsmeldung.
Schritt 3: Schreibe deinen Funktionscode
AWS Lambda Browser IDE für die einfache Codebearbeitung.
Schritt 4: Teste deine Lambda-Funktion
An dieser Stelle gibt die Funktion einfach die Zeichenkette "Hallo aus Lambda!".
Es gibt keine Logik, keine Abhängigkeiten, nichts.
Wir haben ein Python-Skript namens lambda_function.py
, das die Funktion lambda_handler()
enthält, die einen String zurückgibt.
Wir können es jetzt testen, indem wir einfach auf die Schaltfläche Testen klicken.
Teste deine AWS-Lambda-Funktion im Browser.
Du kannst das "Event JSON" entfernen, da unsere Funktion keinen Input benötigt. Gib einen Ereignisnamen an und klicke auf die Schaltfläche Aufrufen.
Erfolgreicher Test der AWS Lambda-Funktion.
Die Funktion wurde erfolgreich ausgeführt und die Nachricht wurde zurückgegeben.
Juhu! Wir haben gerade eine serverlose Funktion mit AWS Lambda implementiert. Im Moment macht sie nicht viel, aber sie ist in Betrieb. Jedes Mal, wenn diese Funktion aufgerufen wird, gibt sie einen einfachen String zurück.
Lambda mit Ereignissen triggern
Wie bereits erwähnt, ermöglicht es die AWS Lambda-Architektur, Funktionen als Reaktion auf bestimmte Ereignisse von verschiedenen AWS-Services auszulösen, was sie zu einem vielseitigen Werkzeug für die Automatisierung von Arbeitsabläufen und die Integration von Systemen macht.
Ereignisse wie Datei-Uploads in einen S3-Bucket, Aktualisierungen in einer DynamoDB-Tabelle oder API-Aufrufe über API Gateway können Lambda-Funktionen aufrufen und ermöglichen so Echtzeitverarbeitung und skalierbare Ausführung.
1. Einen S3-Trigger einrichten
- Gehe zur S3-Konsole.
- Wähle einen S3-Bucket aus.
- Füge unter Eigenschaften eine Ereignisbenachrichtigung hinzu, um deine Lambda-Funktion bei der Erstellung eines Objekts auszulösen.
Ereignisbenachrichtigung im AWS S3-Bucket.
die Lambda-Funktion zum Auslösen in S3 aus.
Beispielhafte Anwendungsfälle:
-
- Ändere die Größe von Bildern, die auf S3 hochgeladen werden, automatisch.
- Konvertiere Videos in verschiedene Auflösungen oder Formate für das Streaming.
- Überprüfe Dateiformate, Größen oder Metadaten beim Hochladen.
- Nutze KI, um Text aus hochgeladenen Dokumenten zu extrahieren (z. B. über Amazon Textract).
2. API Gateway Integration
- Navigiere zum API-Gateway-Dienst.
Das API Gateway Service Dashboard in der AWS Console.
- Erstelle eine neue REST-API.
Erstelle eine neue REST-API über API Gateway.
- Konfiguriere eine Methode (z.B. POST), um deine Lambda-Funktion auszulösen.
Beispielhafte Anwendungsfälle:
-
- Baue eine serverlose API für Antworten in Echtzeit.
- Löse eine Lambda-Funktion aus, um Benutzerdaten in einer Datenbank zu erstellen und zu speichern.
- Bearbeite POST-Anfragen, um Kundenbestellungen in Echtzeit zu bearbeiten und zu validieren
- Löse eine Lambda-Funktion aus, um Daten aus einer Datenbank oder API abzufragen und zurückzugeben.
Bereitstellen und Überwachen von AWS Lambdas
Die Bereitstellung von AWS Lambda-Funktionen ist unkompliziert und kann je nach Bedarf mit verschiedenen Methoden erfolgen, z. B. mit der AWS Management Console für manuelle Bereitstellungen oder mit der AWS CLI für automatische Bereitstellungen.
1. Manuelle Bereitstellung über die AWS-Konsole
Die AWS Management Console bietet eine intuitive Weboberfläche für die Bereitstellung von Lambda-Funktionen. Diese Methode ist ideal für kleine Projekte oder schnelle Änderungen. Hier erfährst du, wie du eine Lambda-Funktion über die Konsole bereitstellst:
- Erstelle oder bearbeite eine Funktion:
- Melde dich bei der AWS Management Console an.
- Navigiere zu AWS Lambda.
- Klicke auf Funktion erstellen, um eine neue Funktion einzurichten oder wähle eine bestehende Funktion aus, die du aktualisieren möchtest.
- Lade deinen Code hoch:
- Wähle Upload von und wähle eine .zip-Datei oder ein Container-Image.
- Du kannst deinen Funktionscode direkt im integrierten Code-Editor für die Entwicklung in kleinem Rahmen bearbeiten.
- Richte die Funktion ein:
- Definiere Umgebungsvariablen, Speicherzuweisung und Timeout-Grenzen je nach Anwendungsfall.
- Füge mithilfe von AWS IAM-Rollen die erforderlichen Berechtigungen hinzu, damit die Funktion mit anderen AWS-Diensten interagieren kann.
- Setze die Änderungen ein:
- Klicke auf Verteilen, um deine Änderungen zu speichern und zu aktivieren.
- Verwende die Testfunktion, um die Funktion manuell aufzurufen und zu überprüfen, ob sie wie erwartet funktioniert.
2. Automatisierte Bereitstellung mit der AWS CLI
Die AWS CLI ist eine effiziente Methode zur Bereitstellung und Aktualisierung von Lambda-Funktionen für die Automatisierung oder häufige Aktualisierungen. Es sorgt für Konsistenz und reduziert manuelle Fehler, vor allem in größeren Projekten oder CI/CD-Pipelines.
Schritt 1 - Bereite das Einsatzpaket vor
Packe deinen Code und deine Abhängigkeiten in eine .zip-Datei. Zum Beispiel:
zip -r my-deployment-package.zip .
Schritt 2 - Einsetzen der Funktion über CLI
Verwenden Sie die update-function-code
Befehl, um den neuen Code auf AWS Lambda hochzuladen:
aws lambda update-function-code \
--function-name MyFunction \
--zip-file fileb://my-deployment-package.zip
Schritt 3 - Überprüfe den Einsatz
Überprüfe nach dem Einsatz den Status der Funktion mit:
aws lambda get-function --function-name MyFunction
Dieser Befehl ruft die Konfiguration der Funktion ab und bestätigt den Einsatz.
Überwachung von Lambda mit CloudWatch
Die Überwachung ist entscheidend, um sicherzustellen, dass deine Lambda-Funktionen effizient laufen, Fehler elegant behandeln und die Leistungserwartungen erfüllen. AWS Lambda integriertsich mit Amazon CloudWatch, umÜberwachungs- und Protokollierungsfunktionen bereitzustellen.
Amazon CloudWatch sammelt automatisch wichtige Metriken für deine Lambda-Funktionen und zeigt sie an. Diese Metriken helfen dir, die Leistung deiner Funktion zu analysieren und Probleme zu beheben.
Zu überwachende Metriken:
- Aufforderungen: Verfolgt, wie oft deine Funktion aufgerufen wird. Hilft dir, Verkehrsmuster und Nutzungstrends zu verstehen.
- Fehler: Zeigt die Anzahl der Fehler bei der Ausführung der Funktion an. Nutze dies, um Fehlerquoten zu ermitteln und Probleme zu beheben.
- Dauer: Misst die Zeit, die für die Ausführung der Funktion benötigt wird. Dies ist entscheidend für die Optimierung der Leistung und die Verwaltung der Kosten.
- Drosseln: Zeigt die Anzahl der Aufrufe an, die aufgrund des Erreichens von Gleichzeitigkeitsgrenzen gedrosselt wurden.
Zugriff auf Metriken:
- Navigiere zur CloudWatch Metrics-Konsole.
- Wähle Lambda aus der Liste der Namespaces aus.
- Wähle die Funktion, die du überwachen willst, um detaillierte Metriken anzuzeigen.
AWS Lambda Best Practices
Jetzt, wo du deine erste Lambda-Funktion eingesetzt hast, ist es nützlich, einige Best Practices für zukünftige, komplexere Projekte zu kennen. In diesem Abschnitt stelle ich einige bewährte Verfahren vor, die du beachten solltest.
1. Optimiere die Funktion Kaltstarts
Kaltstarts treten auf, wenn eine Lambda-Funktion aufgerufen wird, nachdem sie im Leerlauf war, was zu einer leichten Latenz führt, da AWS die Ausführungsumgebung bereitstellt. Auch wenn AWS diesen Aufwand minimiert, gibt es Schritte, die du unternehmen kannst, um die Kaltstartzeit zu verkürzen:
Kleinere Einsatzpakete verwenden
- Halte dein Bereitstellungspaket schlank, indem du nur die notwendigen Abhängigkeiten einfügst.
- Nutze Tools wie AWS Lambda Layers, um gemeinsame Bibliotheken (z. B. AWS SDK) für Funktionen zu nutzen, ohne sie in einzelne Pakete einzubinden.
- Komprimiere und minifiziere den Code, wo immer es möglich ist, besonders bei JavaScript- oder Python-basierten Funktionen.
Vermeide umfangreiche Initialisierungen in deiner Funktion
Verschiebe ressourcenintensive Initialisierungen (z. B. von Datenbankverbindungen, API-Clients oder Bibliotheken von Drittanbietern) außerhalb des Funktionshandlers. Dadurch wird sichergestellt, dass der Code nur einmal pro Umgebung ausgeführt und über mehrere Aufrufe hinweg wiederverwendet wird.
Nutzung der bereitgestellten Gleichzeitigkeit
Für kritische Funktionen, die auf Latenzzeiten angewiesen sind, solltest du Provisioned Concurrency verwenden, um die Ausführungsumgebung für die Bearbeitung von Anfragen bereitzuhalten. Das verursacht zwar zusätzliche Kosten, garantiert aber niedrige Latenzzeiten für Workloads mit hoher Priorität.
2. Funktionen zustandslos halten
Die Zustandslosigkeit ist ein grundlegendes Prinzip der serverlosen Architektur und stellt sicher, dass deine Anwendung nahtlos skaliert:
Vermeiden Sie die Abhängigkeit von In-Memory-Daten
Lambda-Funktionen sind ephemer, d.h. ihre Ausführungsumgebung ist temporär und bleibt möglicherweise nicht über mehrere Aufrufe hinweg bestehen. Anstatt sich auf In-Memory-Variablen zu verlassen, solltest du Statusinformationen in externen Systemen wie DynamoDB, S3 oder Redis speichern.
Idempotenz aktivieren
Gestalte deine Funktionen so, dass sie mit doppelten Ereignissen gut umgehen können. Verwende eindeutige Bezeichner für Anfragen und überprüfe Protokolle oder Datenbanken, um sicherzustellen, dass ein und dasselbe Ereignis nicht mehrfach verarbeitet wird.
3. Umgebungsvariablen verwenden
Umgebungsvariablen sind ein sicherer und bequemer Weg, um deine Lambda-Funktionen zu konfigurieren:
Sensible Informationen speichern
- Speichere API-Schlüssel, Datenbankverbindungsstrings und andere Geheimnisse als Umgebungsvariablen. AWS Lambda verschlüsselt diese Variablen im Ruhezustand und entschlüsselt sie während der Ausführung.
- Für zusätzliche Sicherheit kannst du AWS Secrets Manager oder Systems Manager Parameter Store verwenden, um Geheimnisse dynamisch zu verwalten.
Vereinfache das Konfigurationsmanagement
Verwende Umgebungsvariablen, um Konfigurationen wie Protokollstufen, Regionseinstellungen oder URLs von Drittanbieterdiensten zu verwalten. Dadurch sind keine fest kodierten Werte mehr nötig, und deine Funktion ist in verschiedenen Umgebungen (z. B. Dev, Staging, Prod) besser einsetzbar.
Fazit
Dieses Tutorial bietet eine Anleitung für den Einstieg in AWS Lambda, vom Verständnis der Funktionen und Anwendungsfälle bis hin zur effektiven Bereitstellung und Überwachung der Funktionen. Du kannst robuste und wartbare serverlose Anwendungen erstellen, indem du dich an Best Practices hältst, wie z.B. die Optimierung von Kaltstarts, zustandslose Funktionen und die Verwendung von Umgebungsvariablen.
Mit AWS Lambda kannst du moderne, ereignisgesteuerte Architekturen aufbauen, die sich in das AWS-Ökosystem integrieren. Wenn du mehr darüber erfahren möchtest, empfehle ich dir die AWS-Kurse von DataCamp:ommend.
Lerne mehr über AWS mit diesen Kursen!
Kurs
AWS Security and Cost Management Concepts
Kurs
Streaming Data with AWS Kinesis and Lambda
Der Blog
Die 32 besten AWS-Interview-Fragen und Antworten für 2024
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus
![Nisha Arya Ahmed's photo](https://media.datacamp.com/legacy/v1701364192/Nisha_Arya_Ahmed_61178b20bd.jpg?w=48)
Nisha Arya Ahmed
20 Min.
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024
![Hesam Sheikh Hassani's photo](https://media.datacamp.com/legacy/v1725542817/1721855372970_da79bdfe56.jpg?w=48)
Hesam Sheikh Hassani
15 Min.
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog