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. In diesem Abschnitt werden die grundlegenden Elemente vorgestellt, die Sie benötigen, um mit der Entwicklung von Serverless-Anwendungen mit Lambda zu beginnen.
-
Lambda-Funktionen und -Funktionshandler- Eine Lambda-Funktion ist ein kleiner Codeblock, der als Reaktion auf Ereignisse ausgeführt wird. Die Funktionen können standardmäßig (bis zu 15 Minuten) oder dauerhaft (bis zu einem Jahr) ausgeführt werden. 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. Für langlebige Funktionen umfasst die Ausführungsumgebung automatische Statusverwaltungs- und Checkpoint-Funktionen. Runtimes 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. Bei dauerhaften Funktionen können Ereignisse auch die Wiederaufnahme unterbrochener Workflows auslösen.
-
Lambda-Berechtigungen und -Rollen- Steuern Sie, wer auf Ihre Funktionen zugreifen kann und mit welchen anderen Funktionen AWS-Services Sie interagieren können. Dauerhafte Funktionen erfordern zusätzliche Berechtigungen für die Statusverwaltung und die erweiterte Ausführung.
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 Codeteil, der als Reaktion auf Ereignisse ausgeführt wird, z. B. wenn ein Benutzer auf eine Schaltfläche auf einer Website klickt oder eine Datei in einen Bucket in Amazon Simple Storage Service (Amazon S3) hochgeladen wird. Mit dauerhaften Funktionen kann Ihr Code die Ausführung zwischen den einzelnen Schritten unterbrechen und so den Status automatisch beibehalten. Dadurch eignen sie sich ideal für langwierige Workflows wie Auftragsverarbeitung 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 erforderlich sind. 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 aufrufen, 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 } } }
Lambda verwendet wie Stream- und Warteschlangenservices wie Amazon Kinesis oder Amazon SQS eine Zuordnung von Ereignisquellen anstelle eines Standardauslösers. 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 benötigt, um auf andere zuzugreifen AWS-Services
-
Berechtigungen, die andere Benutzer für den Zugriff auf Ihre Funktion AWS-Services benötigen
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, um auf andere AWS Ressourcen zuzugreifen
Lambda-Funktionen müssen häufig auf andere AWS Ressourcen zugreifen und Aktionen mit ihnen 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 besondere Rolle AWS Identity and Access Management (IAM), eine Identität, die Sie in Ihrem Konto erstellen und der in einer Richtlinie bestimmte 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 Rollenrichtlinie gibt Ihrer Funktion grundlegende Berechtigungen zum Schreiben von Protokollausgaben in Amazon CloudWatch Logs. Um Ihrer Funktion die Erlaubnis zu erteilen, Aktionen mit anderen AWS Ressourcen durchzuführen, müssen Sie die Rolle bearbeiten, um die zusätzlichen Berechtigungen hinzuzufügen. Der einfachste Weg, Berechtigungen hinzuzufügen, ist die Verwendung einer AWS verwalteten Richtlinie. Verwaltete Richtlinien werden von vielen gängigen Anwendungsfällen erstellt AWS und verwaltet und bieten Berechtigungen für diese. Wenn Ihre Funktion beispielsweise CRUD-Operationen an einer DynamoDB-Tabelle ausführt, können Sie die AmazonDynamoDBFullAccess-Richtlinie zu Ihrer Rolle hinzufügen.
Berechtigungen für andere Benutzer und Ressourcen für den Zugriff auf Ihre Funktion
Um anderen AWS-Service Zugriffsberechtigungen auf Ihre Lambda-Funktion zu gewähren, verwenden Sie eine ressourcenbasierte Richtlinie. 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 eine andere AWS-Service Funktion Ihre Funktion über einen Trigger aufrufen kann, muss die ressourcenbasierte Richtlinie Ihrer Funktion diesem Dienst die Erlaubnis erteilen, die Aktion zu verwenden. 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 OR-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 Gewährung von Berechtigungen für Ihre Funktion zu beginnen, können Sie sich für die Verwendung einer AWS verwalteten 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 Buckets im Besonderen zu beschränken AWS-Konten, anstatt dem S3-Service pauschale Berechtigungen zu erteilen.