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.
Funktionsweise von Lambda
Lambda-Funktionen sind die grundlegenden Bausteine, die Sie zum Erstellen von Lambda-Anwendungen verwenden. Beim Schreiben von Funktionen ist es wichtig, die Kernkonzepte und -komponenten zu verstehen, aus denen das Lambda-Programmiermodell besteht. Dieser Abschnitt führt Sie durch die grundlegenden Elemente, die Sie kennen müssen, um mit der Entwicklung serverloser Anwendungen mit Lambda zu beginnen.
-
Lambda-Funktionen und -Funktionshandler— Eine Lambda-Funktion ist ein kleiner Codeblock, der als Reaktion auf Ereignisse ausgeführt wird. Funktionen sind die grundlegenden Bausteine, die Sie zum Erstellen von Anwendungen verwenden. Funktionshandler sind der Einstiegspunkt für Ereignisobjekte, die Ihr Lambda-Funktionscode verarbeitet.
-
Lambda-Ausführungsumgebung und -Laufzeiten: Lambda-Ausführungsumgebungen verwalten die Ressourcen, die zum Ausführen Ihrer Funktion erforderlich sind. Laufzeiten sind die sprachspezifischen Umgebungen, in denen Ihre Funktionen ausgeführt werden.
-
Ereignisse und Auslöser- Andere AWS-Services können Ihre Funktionen als Reaktion auf bestimmte Ereignisse aufrufen.
-
Lambda-Berechtigungen und -Rollen- Kontrollieren Sie, wer auf Ihre Funktionen zugreifen kann und mit welchen anderen Funktionen AWS-Services Ihre Funktionen interagieren können.
Tipp
Wenn Sie die Entwicklung von Serverless-Komponenten zuerst besser verstehen möchten, lesen Sie die Informationen zum Unterschied zwischen herkömmlicher Entwicklung und Serverless-Entwicklung im AWS -Serverless-Entwicklerhandbuch.
Lambda-Funktionen und -Funktionshandler
In Lambda sind Funktionen die grundlegenden Bausteine, mit denen Sie Anwendungen erstellen. Eine Lambda-Funktion ist ein Codeabschnitt, der als Reaktion auf Ereignisse ausgeführt wird, z. B. wenn ein Benutzer eine Schaltfläche auf einer Website auswählt oder eine Datei in einen Amazon Simple Storage Service (Amazon S3) -Bucket hochgeladen wird. Mit langlebigen Funktionen kann Ihr Code die Ausführung zwischen den einzelnen Schritten unterbrechen, sodass der Status automatisch beibehalten wird. Somit eignen sie sich ideal für lang andauernde Workflows wie die Auftragsabwicklung oder Inhaltsmoderation. Sie können sich eine Funktion als eine Art eigenständiges Programm mit den folgenden Eigenschaften vorstellen.
Ein Lambda-Funktionshandler ist die Methode in Ihrem Funktionscode, die Ereignisse verarbeitet. Wenn eine Funktion als Reaktion auf ein Ereignis ausgeführt wird, führt Lambda den Funktionshandler aus. Daten zum Ereignis, das die Ausführung der Funktion verursacht hat, werden direkt an den Handler übergeben. Während der Code in einer Lambda-Funktion mehrere Methoden oder Funktionen enthalten kann, können Lambda-Funktionen nur einen Handler enthalten.
Um eine Lambda-Funktion zu erstellen, bündeln Sie den Funktionscode und die zugehörigen Abhängigkeiten in einem Bereitstellungspaket. Lambda unterstützt zwei Arten von Bereitstellungspaketen: ZIP-Dateiarchive und Container-Images.
-
Eine Funktion hat eine bestimmte Aufgabe oder einen bestimmten Zweck.
-
Sie wird nur ausgeführt, wenn sie als Reaktion auf bestimmte Ereignisse benötigt wird.
-
Sie wird automatisch beendet, wenn sie fertig ist.
Lambda-Ausführungsumgebung und -Laufzeiten
Lambda-Funktionen werden in einer sicheren, isolierten Ausführungsumgebung ausgeführt, die Lambda für Sie verwaltet. Für langlebige Funktionen umfasst die Ausführungsumgebung zusätzliche Komponenten für die Statusverwaltung und die Workflow-Koordination. Die Ausführungsumgebung verwaltet die Prozesse und Ressourcen, die für die Ausführung Ihrer Funktion benötigt werden. Wenn eine Funktion zum ersten Mal aufgerufen wird, erstellt Lambda eine neue Ausführungsumgebung, in der die Funktion ausgeführt werden kann. Nachdem die Ausführung der Funktion abgeschlossen wurde, beendet Lambda die Ausführungsumgebung nicht sofort. Wenn die Funktion erneut aufgerufen wird, kann Lambda die vorhandene Ausführungsumgebung wiederverwenden.
Die Lambda-Ausführungsumgebung enthält außerdem eine Laufzeit, eine sprachspezifische Umgebung, die Ereignisinformationen und Antworten zwischen Lambda und Ihrer Funktion weiterleitet. Lambda bietet eine Reihe von verwalteten Laufzeiten für die gängigsten Programmiersprachen, Sie können aber auch eigene erstellen.
Bei verwalteten Laufzeiten wendet Lambda automatisch Sicherheitsupdates und Patches auf Funktionen an, die die Laufzeit verwenden.
Ereignisse und Auslöser
Sie können eine Lambda-Funktion auch direkt über die Lambda-Konsole, die AWS CLI
Damit Ihre Funktion auf Ereignisse reagiert, richten Sie einen Auslöser ein. Ein Auslöser verbindet Ihre Funktion mit einer Ereignisquelle und Ihre Funktion kann mehrere Auslöser haben. Wenn ein Ereignis eintritt, empfängt Lambda Ereignisdaten als JSON-Dokument und konvertiert es in ein Objekt, das Ihr Code verarbeiten kann. Sie können das folgende JSON-Format für Ihr Ereignis definieren und die Lambda-Laufzeit konvertiert dieses JSON-Dokument in ein Objekt, bevor es an den Handler Ihrer Funktion übergeben wird.
Beispiel Benutzerdefiniertes Lambda-Ereignis
{ "Location": "SEA", "WeatherData":{ "TemperaturesF":{ "MinTempF": 22, "MaxTempF": 78 }, "PressuresHPa":{ "MinPressureHPa": 1015, "MaxPressureHPa": 1027 } } }
Stream- und Warteschlangendienste wie Amazon Kinesis oder Amazon SQS verwenden eine Zuordnung der Ereignisquelle anstelle eines Standard-Triggers. Bei Zuordnungen von Ereignisquellen wird die Quelle nach neuen Daten abgefragt, Datensätze gebündelt und anschließend Ihre Funktion mit den gebündelten Ereignissen aufgerufen. Weitere Informationen finden Sie unter Wie unterscheiden sich Zuordnungen von Ereignisquellen von direkten Auslösern.
Um zu verstehen, wie ein Auslöser funktioniert, beginnen Sie mit dem Tutorial Verwenden eines Amazon-S3-Auslösers. Einen allgemeinen Überblick über die Verwendung von Auslösern und Anweisungen zum Erstellen eines Auslösers mithilfe der Lambda-Konsole finden Sie unter Integration anderer Services.
Lambda-Berechtigungen und -Rollen
Bei Lambda gibt es zwei Haupttypen von Berechtigungen, die Sie konfigurieren müssen:
-
Berechtigungen, die Ihre Funktion für den Zugriff auf andere benötigt AWS-Services
-
Berechtigungen, die andere Benutzer AWS-Services benötigen, um auf deine Funktion zuzugreifen
In den folgenden Abschnitten werden diese beiden Berechtigungstypen beschrieben und bewährte Methoden für die Anwendung von geringsten Berechtigungen erörtert.
Berechtigungen für Funktionen zum Zugriff auf andere AWS Ressourcen
Lambda-Funktionen müssen häufig auf andere AWS Ressourcen zugreifen und mit ihnen Aktionen ausführen. Eine Funktion könnte beispielsweise Elemente aus einer DynamoDB-Tabelle lesen, ein Objekt in einem S3-Bucket speichern oder in eine Amazon-SQS-Warteschlange schreiben. Um Funktionen die Berechtigungen zu geben, die sie für die Ausführung dieser Aktionen benötigen, verwenden Sie eine Ausführungsrolle.
Eine Lambda-Ausführungsrolle ist eine spezielle Art von AWS Identity and Access Management (IAM-) Rolle, eine Identität, die Sie in Ihrem Konto erstellen und der bestimmte, in einer Richtlinie definierte Berechtigungen zugeordnet sind.
Jede Lambda-Funktion muss eine Ausführungsrolle haben und eine einzelne Rolle kann von mehr als einer Funktion verwendet werden. Wenn eine Funktion aufgerufen wird, übernimmt Lambda die Ausführungsrolle der Funktion und erhält die Berechtigung, die in der Richtlinie der Rolle definierten Aktionen auszuführen.
Wenn Sie eine Funktion in der Lambda-Konsole erstellen, erstellt Lambda automatisch eine Ausführungsrolle für Ihre Funktion. Die Richtlinie der Rolle erteilt Ihrer Funktion grundlegende Berechtigungen zum Schreiben von Protokollausgaben in Amazon CloudWatch Logs. Um Ihrer Funktion die Erlaubnis zu geben, Aktionen mit anderen AWS Ressourcen auszuführen, müssen Sie die Rolle bearbeiten, um die zusätzlichen Berechtigungen hinzuzufügen.
Der einfachste Weg, Berechtigungen hinzuzufügen, besteht darin, eine AWS verwaltete Richtlinie zu verwenden. Verwaltete Richtlinien werden von erstellt und verwaltet AWS und bieten Berechtigungen für viele gängige Anwendungsfälle. Wenn Ihre Funktion beispielsweise CRUD-Operationen an einer DynamoDB-Tabelle ausführt, können Sie die AmazonDynamoDBFullAccess Richtlinie Ihrer Rolle hinzufügen.
Berechtigungen für andere Benutzer und Ressourcen für den Zugriff auf Ihre Funktion
Um anderen AWS-Service Berechtigungen für den Zugriff auf Ihre Lambda-Funktion zu gewähren, verwenden Sie eine ressourcenbasierte Richtlinie. Anzeigen von ressourcenbasierten IAM-Richtlinien in Lambda In IAM werden ressourcenbasierte Richtlinien einer Ressource zugeordnet (in diesem Fall Ihrer Lambda-Funktion). Sie definieren, wer auf die Ressource zugreifen kann und welche Aktionen sie ausführen können.
Damit ein anderer AWS-Service Benutzer Ihre Funktion über einen Trigger aufrufen kann, muss die ressourcenbasierte Richtlinie Ihrer Funktion diesem Dienst die Berechtigung zur Verwendung der Aktion gewähren. lambda:InvokeFunction Wenn Sie den Auslöser mit der Konsole erstellen, fügt Lambda diese Berechtigung automatisch für Sie hinzu.
Um anderen AWS Benutzern die Erlaubnis zu erteilen, auf Ihre Funktion zuzugreifen, können Sie dies in der ressourcenbasierten Richtlinie Ihrer Funktion genauso definieren wie für eine andere oder eine Ressource. AWS-Service Sie können auch eine identitätsbasierte Richtlinie verwenden, die dem Benutzer zugeordnet ist.
Bewährte Methoden für Lambda-Berechtigungen
Wenn Sie Berechtigungen mithilfe von IAM-Richtlinien festlegen, empfiehlt es sich aus Sicherheitsgründen nur die zum Ausführen einer Aufgabe erforderlichen Berechtigungen zu erteilen. Dies wird als Prinzip der geringsten Berechtigungen bezeichnet. Um mit der Erteilung von Berechtigungen für Ihre Funktion zu beginnen, können Sie sich für eine AWS verwaltete Richtlinie entscheiden. Verwaltete Richtlinien können die schnellste und einfachste Methode sein, um Berechtigungen für die Ausführung einer Aufgabe zu erteilen. Sie können jedoch auch andere Berechtigungen beinhalten, die Sie nicht benötigen. Wenn Sie von der frühen Entwicklungsphase über die Testphase bis hin zur Produktion voranschreiten, empfehlen wir Ihnen, die Berechtigungen auf die erforderlichen zu reduzieren, indem Sie Ihre eigenen vom Kunden verwalteten Richtlinien definieren.
Das gleiche Prinzip gilt für die Erteilung von Berechtigungen für den Zugriff auf Ihre Funktion mithilfe einer ressourcenbasierten Richtlinie. Wenn Sie beispielsweise Amazon S3 die Erlaubnis geben möchten, Ihre Funktion aufzurufen, empfiehlt es sich, den Zugriff auf einzelne Buckets oder insbesondere auf Buckets zu beschränken AWS-Konten, anstatt dem S3-Service pauschale Berechtigungen zu erteilen.