Erste Schritte mit AWS Lambda: Eine Schritt-für-Schritt-Anleitung

AWS Lambda ist ein leistungsstarker serverloser Rechendienst, der es Ihnen ermöglicht, Code auszuführen, ohne Infrastruktur verwalten zu müssen, sodass Sie sich ausschließlich auf das Schreiben von Code konzentrieren können, ohne sich um die Bereitstellung oder Wartung von Servern kümmern zu müssen.

In diesem Tutorial werden wir AWS Lambda erkunden, von der Einrichtung Ihrer ersten Funktion bis hin zur Integration mit anderen AWS-Diensten. Egal, ob Sie Datenströme verarbeiten oder APIs erstellen, dieser Leitfaden hilft Ihnen, mit serverlosen Bereitstellungen unter Verwendung von AWS Lambda zu beginnen.

Was ist AWS Lambda?

AWS Lambda ist eine serverlose Computing-Plattform, die von Amazon Web Services (AWS) bereitgestellt wird und es Entwicklern ermöglicht, Code auszuführen, ohne Server bereitzustellen oder zu verwalten.AWS Lambda erleichtert dies, indem es Ressourcen dynamisch zuweist, um Ihre Funktionen nur bei Bedarf auszuführen, und Sie basierend auf der Nutzung anstelle von vorab zugewiesener Serverkapazität belastet.

Dieser Ansatz zur Anwendungsentwicklung beseitigt die Notwendigkeit für die traditionelle Infrastruktur, sodass Sie sich ausschließlich auf das Schreiben und Bereitstellen von Code konzentrieren können.

AWS Lambda ist ereignisgesteuert, was bedeutet, dass es durch spezifische Ereignisse von anderen AWS-Diensten ausgelöst wird, was es ideal für den Aufbau reaktionsschneller, skalierbarer und kosteneffizienter Lösungen macht.

Traditionelle Bereitstellungsmethoden erfordern das Einrichten und Verwalten von Servern, was Skalierung, Aktualisierung und Patchen beinhaltet. Diese Aufgaben können zeitaufwendig, kostspielig und weniger effizient für sporadische Arbeitslasten sein. Im Gegensatz dazu beseitigt die serverlose Bereitstellung diese Overheads und bietet automatische Skalierung und hohe Verfügbarkeit sofort.

Funktionen 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 Runtime-Umgebungen: Lambda unterstützt verschiedene Runtimes, darunter Python, Node.js, Java, Go, Ruby und .NET. Entwickler können auch ihre eigene Runtime mit der AWS Lambda Runtime API mitbringen, was es zu einer vielseitigen Plattform für unterschiedliche Anwendungsfälle macht.
  • Automatische Skalierbarkeit: AWS Lambda skaliert Ihre Anwendung automatisch basierend auf der Nachfrage. Ob die Verarbeitung eines einzelnen Ereignisses oder das gleichzeitige Handhaben von Tausenden, Lambda passt die Rechenressourcen dynamisch an.
  • Bezahlen nach Verbrauch: Die Kosten werden durch die Anzahl der Anfragen und die Ausführungszeit Ihrer Funktionen bestimmt. Dies eliminiert die Notwendigkeit von Vorausinvestitionen und stellt sicher, dass Sie nur für das bezahlen, was Sie nutzen.
  • Integrierte Sicherheit: Lambda arbeitet mit AWS Identity and Access Management (IAM), was eine feingranulare Zugriffskontrolle und sichere Interaktionen zwischen Ihren Funktionen und anderen AWS-Diensten gewährleistet.

Häufige Anwendungsfälle von Lambda

  • Datenströme verarbeiten: AWS Lambda integriert sich mit Amazon Kinesis, um Streaming-Daten in Echtzeit zu verarbeiten und zu analysieren. Zum Beispiel können Sie IoT-Geräte überwachen oder Protokolldateien dynamisch verarbeiten.
  • RESTful APIs erstellen: Lambda-Funktionen können mit AWS API Gateway kombiniert werden, um skalierbare APIs für Web- und mobile Anwendungen zu erstellen. Diese Einrichtung wird häufig verwendet, um die Benutzerauthentifizierung zu verwalten, Datenbanken abzufragen oder dynamische Inhalte zu generieren.
  • Automatisierung von Workflows: Automatisieren Sie komplexe Workflows, indem Sie Lambda-Funktionen basierend auf Ereignissen aus Diensten wie S3, DynamoDB oder CloudWatch auslösen. Beispielsweise können Sie Bilder, die in S3 hochgeladen wurden, verkleinern oder alte Datenbankdatensätze automatisch archivieren.
  • Ereignisverarbeitung in Datenpipelines: Sie können Lambda verwenden, um Echtzeitdatenereignisse zu verarbeiten, z. B. die Verarbeitung neuer Uploads in einem S3-Bucket, die Daten vor dem Speichern zu transformieren oder Datenströme mit externen API-Aufrufen anzureichern.
  • Serverloses Backend-Verarbeitung: Lambda wird üblicherweise verwendet, um Backend-Aufgaben wie die Datenvalidierung, ETL (Extrahieren, Transformieren, Laden) Prozesse oder das Senden von Benachrichtigungen über Amazon SNS oder SES auszulagern.

Wie funktioniert AWS Lambda?

AWS Lambda arbeitet nach einem ereignisgesteuerten Modell, was bedeutet, dass es Code als Reaktion auf spezifische Auslöser oder Ereignisse ausführt. Der Schlüssel zur Funktionalität von Lambda liegt in seiner Integration mit anderen AWS-Diensten und der Fähigkeit, Funktionen auf Abruf auszuführen. Lassen Sie uns Schritt für Schritt in die Mechanik von AWS Lambda eintauchen:

Ein Beispiel-Architekturdiagramm, das Lambda und andere Kern-AWS-Services verwendet. Bildquelle: AWS.

1. Auslösen von AWS Lambda-Funktionen

AWS Lambda-Funktionen werden durch Ereignisse aus verschiedenen AWS-Services oder externen Systemen initiiert. Beispiele für häufige Ereignisquellen sind:

  • API Gateway: Wenn ein Benutzer eine HTTP-Anforderung (z. B. eine GET- oder POST-Anforderung) an Ihren API Gateway-Endpunkt sendet, kann Lambda eine Funktion ausführen, um die Anforderung zu verarbeiten—beispielsweise ein RESTful-API-Endpunkt zur Erstellung eines Benutzers 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. Beispielsweise können sie Bilder skalieren oder Dateiformate konvertieren, nachdem ein Bild in einen S3-Bucket hochgeladen wurde.
  • DynamoDB-Streams: Änderungen an DynamoDB-Tabellen, wie Einfügungen, Aktualisierungen oder Löschungen, können eine Lambda-Funktion auslösen. Zum Beispiel das Auslösen eines Analyse-Pipelines, wenn neue Zeilen einer DynamoDB-Tabelle hinzugefügt werden.
  • Benutzerdefinierte Anwendungen: Sie können Lambda-Funktionen direkt mithilfe von SDKs, der Befehlszeilenschnittstelle (CLI) oder HTTP-Anfragen aufrufen, um eine Integration mit externen Systemen zu 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 enthält:

  • Ihren Funktionscode: Der Code, den Sie für Ihre spezifische Aufgabe geschrieben haben.
  • Zugewiesene Ressourcen: CPU und Speicher (konfigurierbar) werden je nach Bedarf der Funktion dynamisch zugewiesen.
  • Abhängigkeiten: Alle externen Bibliotheken oder Pakete, die während des Bereitstellungsvorgangs angegeben wurden, sind enthalten.

3. Parallelität und Skalierung

AWS Lambda unterstützt automatisches Skalieren, indem mehrere Instanzen Ihrer Funktion parallel ausgeführt werden. Es verwaltet das Skalieren transparent ohne Konfiguration. So funktioniert die Parallelität:

  • Wenn Ihre Funktion 100 Ereignisse gleichzeitig verarbeiten muss, erstellt Lambda so viele Ausführungsumgebungen, wie benötigt werden (bis zur Parallelitätsgrenze).

4. Integration mit anderen AWS-Diensten

AWS Lambda integriert sich tief mit AWS-Diensten, um robuste End-to-End-Lösungen zu erstellen:

  • Datenbankinteraktionen: 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 weiteren Verarbeitung senden.
  • Überwachung und Protokollierung: CloudWatch erfasst alle Protokolle, Metriken und Fehlerdetails für Lambda-Funktionen, die es Ihnen ermöglichen, Leistungsprobleme zu überwachen und zu beheben.

Jetzt geht es darum, Ihre erste Lambda-Funktion einzurichten!

Einrichten von AWS Lambda

Voraussetzungen

  • AWS-Konto:Stellen Sie sicher, dass Sie über ein aktives AWS-Konto verfügen. Hier anmelden.
  • IAM-Benutzereinrichtung: Erstellen Sie einen IAM-Benutzer mit Berechtigungen für AWS Lambda. Befolgen Sie den IAM-Leitfaden.

Einrichten der Entwicklungsumgebung

  • Installieren Sie AWS CLI: Laden Sie die AWS CLI herunter und installieren Sie sie. Konfigurieren Sie sie mit Ihren IAM-Anmeldeinformationen.
  • Richten Sie Python oder Node.js ein: Installieren Sie Python oder Node.js basierend auf Ihrer bevorzugten Laufzeitumgebung. AWS Lambda unterstützt mehrere Laufzeiten. Wir werden in diesem Tutorial die Python-Laufzeitumgebung verwenden.

Schritt 1: Zugriff auf die AWS Lambda-Konsole

  1. Melden Sie sich an beim AWS Management Console.
  2. Navigieren Sie zum Lambda-Dienst.

Navigations-Dashboard in der AWS-Konsole.

Klicken Sie im Navigationsmenü auf Lambda um das Dashboard anzuzeigen:

AWS Lambda-Dashboard in der AWS-Konsole.

Schritt 2: Erstellen einer neuen Funktion

  1. Klicken Sie auf Funktion erstellen.
  2. Wählen Sie „Autor von Grund auf neu erstellen“.
  3. Geben Sie einen Namen für Ihre Funktion an.
  4. Wählen Sie eine Laufzeitumgebung aus (z. B. Python 3.11).
  5. Klicken Sie auf die Funktion erstellen-Schaltfläche.

Erstellen Sie eine neue AWS Lambda-Funktion.

Es dauert einige Sekunden. Sobald die Funktion erstellt ist, sehen Sie eine Erfolgsmeldung oben.

Schritt 3: Schreiben Sie Ihren Funktionscode

AWS Lambda-Browser-IDE für einfache Code-Bearbeitung.

Schritt 4: Testen Sie Ihre Lambda-Funktion

Zu diesem Zeitpunkt gibt diese Funktion einfach den String “Hallo von Lambda!” zurück.

Es gibt keine Logik, keine Abhängigkeiten, nichts.

Wir haben ein Python-Skript namens lambda_function.py, das die Funktion namens lambda_handler() enthält, die einen String zurückgibt.

Jetzt können wir es testen, indem wir einfach auf die Schaltfläche Test klicken.

Testen Sie Ihre AWS-Lambda-Funktion im Browser.

Sie können das “Event JSON” entfernen, da unsere Funktion keine Eingabe erfordert. Geben Sie einen Ereignisnamen ein und klicken Sie 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 mithilfe von AWS Lambda bereitgestellt. Im Moment macht sie noch nicht viel, aber sie läuft. Jedes Mal, wenn diese Funktion aufgerufen wird, gibt sie eine einfache Zeichenkette zurück.

Auslösen von Lambda mit Ereignissen

Wie erwähnt, ermöglicht die AWS Lambda-Architektur das Auslösen von Funktionen als Reaktion auf spezifische Ereignisse aus verschiedenen AWS-Diensten, was sie zu einem vielseitigen Tool zur Automatisierung von Workflows und Integration von Systemen macht.

Ereignisse wie Datei-Uploads in einem S3-Bucket, Updates in einer DynamoDB-Tabelle oder API-Aufrufe über die API Gateway können Lambda-Funktionen aufrufen und so Echtzeitverarbeitung und skalierbare Ausführung ermöglichen.

1. Einrichten eines S3-Triggers

  1. Wechseln Sie zur S3-Konsole.
  2. Wählen Sie den S3-Bucket aus.
  3. Fügen Sie unter Eigenschaften eine Ereignisbenachrichtigung hinzu, um Ihre Lambda-Funktion auszulösen, wenn ein Objekt erstellt wird.Erstellen Sie eine Ereignisbenachrichtigung im AWS S3-Bucket.Wählen Sie die Lambda-Funktion aus, die in S3 ausgelöst werden soll.

Beispielanwendungsfälle:

    • Automatisches Ändern der Größe von Bildern, die in S3 hochgeladen werden.
    • Videos in mehrere Auflösungen oder Formate für das Streaming konvertieren.
    • Überprüfen von Dateiformaten, -größen oder Metadaten beim Hochladen.
    • KI verwenden, um Text aus hochgeladenen Dokumenten zu extrahieren (z.B. über Amazon Textract).

2. API Gateway-Integration

  1. Zum API Gateway-Dienst navigieren.

Das Dashboard des API Gateway-Dienstes in der AWS-Konsole.

  1. Eine neue REST API erstellen.

Eine neue REST API über das API Gateway erstellen.

  1. Eine Methode (z.B. POST) konfigurieren, um Ihre Lambda-Funktion auszulösen.

Beispielanwendungsfälle:

    • Eine serverlose API für Echtzeitantworten erstellen.
    • Eine Lambda-Funktion auslösen, um Benutzerdaten in einer Datenbank zu erstellen und zu speichern.
    • POST-Anfragen bearbeiten, um Kundenbestellungen in Echtzeit zu verarbeiten und zu validieren.
    • Eine Lambda-Funktion auslösen, um Daten aus einer Datenbank oder API abzufragen und zurückzugeben.

Bereitstellen und Überwachen von AWS Lambdas

Das Bereitstellen von AWS Lambda-Funktionen ist unkompliziert und kann je nach Bedarf mit verschiedenen Methoden erfolgen, wie z.B. mit der AWS Management Console für manuelle Bereitstellungen oder mit der AWS CLI für automatisierte Bereitstellungen.

1. Manuelle Bereitstellung mit der AWS-Konsole

Die AWS Management Console bietet eine intuitive Weboberfläche für die Bereitstellung von Lambda-Funktionen. Diese Methode eignet sich ideal für kleine Projekte oder schnelle Änderungen. So bereiten Sie eine Lambda-Funktion mit der Konsole vor:

  1. Erstellen oder bearbeiten Sie eine Funktion:
    • Melden Sie sich an bei der AWS Management Console.
    • Navigieren Sie zu AWS Lambda.
    • Klicken Sie auf Funktion erstellen, um eine neue Funktion einzurichten, oder wählen Sie eine vorhandene Funktion zur Aktualisierung aus.
  2. Laden Sie Ihren Code hoch:
    • Wählen Sie Hochladen aus und wählen Sie eine .zip-Datei oder ein Container-Image aus.
    • Sie können Ihren Funktionscode direkt im integrierten Code-Editor für die Entwicklung im kleinen Maßstab bearbeiten.
  3. Konfigurieren Sie die Funktion:
    • Definieren Sie Umgebungsvariablen, Speicherzuweisung und Timeout-Limits basierend auf Ihrem Anwendungsfall.
    • Fügen Sie die erforderlichen Berechtigungen mithilfe von AWS IAM-Rollen hinzu, um der Funktion die Interaktion mit anderen AWS-Services zu ermöglichen.
  4. Deployen Sie die Änderungen:
    • Klicken Sie auf Bereitstellen, um Ihre Änderungen zu speichern und zu aktivieren.
    • Verwenden Sie 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 ein effizienter Weg, um Lambda-Funktionen für Automatisierung oder häufige Updates bereitzustellen und zu aktualisieren. Sie sorgt für Konsistenz und reduziert manuelle Fehler, insbesondere in größeren Projekten oder CI/CD-Pipelines.

Schritt 1 – Bereiten Sie das Bereitstellungspaket vor

Packen Sie Ihren Code und die Abhängigkeiten in eine .zip-Datei. Zum Beispiel:

zip -r my-deployment-package.zip .

Schritt 2 – Bereitstellung der Funktion mit CLI

Verwenden Sie den update-function-code Befehl, um den neuen Code zu AWS Lambda hochzuladen:

aws lambda update-function-code \ --function-name MyFunction \ --zip-file fileb://my-deployment-package.zip

–function-name MyFunction \

–zip-file fileb://my-deployment-package.zip

aws lambda get-function --function-name MyFunction

Schritt 3 – Überprüfen Sie die Bereitstellung

Überprüfen Sie nach der Bereitstellung den Status der Funktion mit:

Dieser Befehl ruft die Konfiguration der Funktion ab und bestätigt die Bereitstellung.

Überwachung von Lambda mit CloudWatch

Die Überwachung ist entscheidend, um sicherzustellen, dass Ihre Lambda-Funktionen effizient ausgeführt werden, Fehler elegant behandelt werden und die Leistungserwartungen erfüllt werden. AWS Lambda integriert sich mit Amazon CloudWatch, um Überwachungs- und Protokollierungsfunktionen bereitzustellen.

  1. Amazon CloudWatch sammelt und zeigt automatisch wichtige Metriken für Ihre Lambda-Funktionen an. Diese Metriken helfen Ihnen, die Leistung Ihrer Funktion zu analysieren und Probleme zu beheben.
  2. Metriken zur Überwachung:
  3. Invocationen: Verfolgt die Anzahl der Aufrufe Ihrer Funktion. Hilft Ihnen, Verkehrsverläufe und Nutzungstrends zu verstehen.
  4. Fehler: Zeigt die Anzahl der Fehler während der Funktionsausführung an. Verwenden Sie dies, um Ausfallraten zu identifizieren und Probleme zu debuggen.

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 Kostenverwaltung.

  • Drossel: Zeigt die Anzahl der Aufrufe an, die aufgrund von Überschreitung von Konkurrenzlimits gedrosselt wurden.
  • Zugriff auf Metriken:
  • Navigieren Sie zur CloudWatch-Metrikenkonsole.

Wählen Sie Lambda aus der Liste der Namensräume.

Wählen Sie die Funktion aus, die Sie überwachen möchten, um detaillierte Metriken anzuzeigen.

AWS Lambda Best Practices

Jetzt, da Sie Ihre erste Lambda-Funktion bereitgestellt haben, ist es nützlich, einige bewährte Verfahren für zukünftige, komplexere Projekte zu kennen. In diesem Abschnitt gebe ich einige bewährte Verfahren, die Sie im Hinterkopf behalten sollten.

1. Optimieren Sie die Kaltstarts der Funktion

  • Kaltstarts treten auf, wenn eine Lambda-Funktion aufgerufen wird, nachdem sie untätig war, was zu leichten Verzögerungen führt, während AWS die Ausführungsumgebung bereitstellt. Obwohl AWS diesen Overhead minimiert, gibt es Schritte, die Sie unternehmen können, um die Kaltstartzeit zu reduzieren:
  • Verwenden Sie kleinere Bereitstellungspakete
  • Halten Sie Ihr Bereitstellungspaket leicht, indem Sie nur die notwendigen Abhängigkeiten einschließen.

Verwenden Sie Tools wie AWS Lambda Layers, um gemeinsame Bibliotheken (z. B. die AWS SDK) über Funktionen hinweg gemeinsam zu nutzen, ohne sie in einzelnen Paketen zu inkludieren.

Komprimieren und minimieren Sie den Code, wo möglich, insbesondere für JavaScript- oder Python-basierte Funktionen.

Vermeiden Sie eine aufwendige Initialisierung in Ihrer Funktion

Bewege ressourcenintensive Initialisierungen (z. B. Datenbankverbindungen, API-Clients oder Drittanbieterbibliotheken) aus dem Funktionshandler heraus. Dies stellt sicher, dass der Code nur einmal pro Umgebung ausgeführt und über Aufrufe hinweg wiederverwendet wird.

Nutze bereitgestellte Parallelität

Für kritische, latenzempfindliche Funktionen verwende bereitgestellte Parallelität, um die Ausführungsumgebung bereit zu halten, um Anfragen zu bedienen. Auch wenn zusätzliche Kosten anfallen, garantiert es niedrige Latenz für hochpriorisierte Arbeitslasten.

2. Halte Funktionen zustandslos

Zustandslosigkeit ist ein grundlegendes Prinzip der serverlosen Architektur, das sicherstellt, dass deine Anwendung nahtlos skaliert:

Vermeide Abhängigkeiten von im Speicher gehaltenen Daten

Lambda-Funktionen sind ephemeral, das bedeutet, dass ihre Ausführungsumgebung temporär ist und möglicherweise nicht über Aufrufe hinweg bestehen bleibt. Anstatt sich auf im Speicher gehaltene Variablen zu verlassen, speichere Zustandsinformationen in externen Systemen wie DynamoDB, S3 oder Redis.

Aktivieren Sie Idempotenz

Gestalten Sie Ihre Funktionen so, dass sie doppelte Ereignisse elegant verarbeiten. Verwenden Sie eindeutige Identifikatoren für Anfragen und überprüfen Sie Protokolle oder Datenbanken, um sicherzustellen, dass dasselbe Ereignis nicht mehrfach verarbeitet wird.

3. Verwenden Sie Umgebungsvariablen

  • Umgebungsvariablen sind eine sichere und bequeme Möglichkeit, Ihre Lambda-Funktionen zu konfigurieren:
  • Speichern Sie sensible Informationen

Speichern Sie API-Schlüssel, Datenbankverbindungszeichenfolgen 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 verwenden Sie AWS Secrets Manager oder Systems Manager Parameter Store, um Geheimnisse dynamisch zu verwalten.

Vereinfachen Sie das Konfigurationsmanagement

Verwenden Sie Umgebungsvariablen, um Konfigurationen wie Protokollebenen, Regions-Einstellungen oder URLs von Drittanbieterdiensten zu verwalten. Dadurch entfällt die Notwendigkeit von fest codierten Werten, was Ihre Funktion transportabler über verschiedene Umgebungen hinweg macht (z. B. Entwicklung, Test, Produktion).

Fazit

Source:
https://www.datacamp.com/tutorial/aws-lambda