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.
So funktioniert Lambda
Lambda-Funktionen sind die grundlegenden Bausteine, die Sie zum Erstellen von Lambda-Anwendungen verwenden. Um Funktionen zu schreiben, ist es wichtig, die Kernkonzepte und Komponenten zu verstehen, aus denen das Lambda-Programmiermodell besteht. In diesem Abschnitt werden Sie durch die grundlegenden Elemente geführt, die Sie benötigen, 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 für die Ausführung Ihrer Funktion erforderlich sind. Laufzeiten sind die sprachspezifischen Umgebungen, in denen Ihre Funktionen ausgeführt werden.
-
Ereignisse und Auslöser- wie andere Ihre Funktionen als Reaktion auf bestimmte Ereignisse AWS-Services aufrufen.
-
Lambda-Berechtigungen und -Rollen- wie Sie kontrollieren, wer auf Ihre Funktionen zugreifen kann und mit welchen anderen Funktionen AWS-Services Ihre Funktionen interagieren können.
Tipp
Wenn Sie mit einem allgemeineren Verständnis der serverlosen Entwicklung beginnen möchten, finden Sie im Serverless Developer Guide weitere Informationen unter Grundlegendes zum Unterschied zwischen herkömmlicher und AWS serverloser Entwicklung.
Lambda-Funktionen und Funktionshandler
In Lambda sind Funktionen die grundlegenden Bausteine, mit denen Sie Anwendungen erstellen. Eine Lambda-Funktion ist ein Code, 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 Amazon Simple Storage Service (Amazon S3) -Bucket hochgeladen wird. 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 über das Ereignis, das die Ausführung der Funktion verursacht hat, werden direkt an den Handler übergeben. Während der Code in einer Lambda-Funktion mehr als eine Methode oder Funktion enthalten kann, können Lambda-Funktionen nur einen Handler haben.
Um eine Lambda-Funktion zu erstellen, bündeln Sie Ihren Funktionscode und seine 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 werden nur ausgeführt, wenn sie als Reaktion auf bestimmte Ereignisse benötigt werden
-
Sie hören automatisch auf zu laufen, wenn sie fertig sind
Lambda-Ausführungsumgebung und Laufzeiten
Lambda-Funktionen werden in einer sicheren, isolierten Ausführungsumgebung ausgeführt, die Lambda für Sie verwaltet. Diese 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 Funktion vollständig ausgeführt wurde, stoppt Lambda die Ausführungsumgebung nicht sofort. Wenn die Funktion erneut aufgerufen wird, kann Lambda die bestehende Ausführungsumgebung wiederverwenden.
Die Lambda-Ausführungsumgebung enthält auch eine Runtime, 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, oder Sie können Ihre eigenen 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 Trigger ein. Ein Trigger 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 sie 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 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 } } }
Bei Stream- und Warteschlangendiensten wie Amazon Kinesis oder Amazon SQS verwendet Lambda 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.
Um zu verstehen, wie ein Trigger funktioniert, beginnen Sie mit dem Tutorial Verwenden eines Amazon S3 S3-Triggers. Einen allgemeinen Überblick über die Verwendung von Triggern und Anweisungen zum Erstellen eines Triggers mithilfe der Lambda-Konsole finden Sie unterIntegration anderer Services.
Lambda-Berechtigungen und -Rollen
Für 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 Berechtigungen mit den geringsten Rechten erörtert.
Berechtigungen für Funktionen für den Zugriff auf andere Ressourcen AWS
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 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 Erlaubnis, 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 an eine Ressource (in diesem Fall Ihre Lambda-Funktion) angehängt und definieren, wer auf die Ressource zugreifen kann und welche Aktionen sie ausführen dürfen.
Damit ein anderer AWS-Service Benutzer 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 Trigger 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 AWS-Service OR-Ressource. 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, besteht die bewährte Sicherheitsmethode darin, nur die für die Ausführung einer Aufgabe erforderlichen Berechtigungen zu gewähren. Dies wird als Prinzip der geringsten Rechte 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 Entwicklung über den Test bis hin zur Produktion übergehen, empfehlen wir Ihnen, die Berechtigungen auf die benötigten zu reduzieren, indem Sie Ihre eigenen, vom Kunden verwalteten Richtlinien definieren.
Das gleiche Prinzip gilt für die Erteilung von Zugriffsberechtigungen für 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.