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.
In vielen Fällen kann die Aufteilung der Funktionalität in verschiedene Funktionen die Leistung verbessern und eine Anwendung wartbarer und skalierbarer machen. Lambda-Monolithen können jedoch ein nützliches Sprungbrett bei der Migration einer vorhandenen Anwendung sein.
Wie viel Funktionalität sollte eine einzelne Lambda-Funktion enthalten?
Die Funktion sollte eine einzelne Aufgabe im Datenfluss zwischen den AWS Diensten in Ihrem Microservice ausführen. Wenn die funktionale Aufgabe jedoch zu klein ist, kann dies zu zusätzlichen Latenzzeiten in der Anwendung und zum Overhead bei der Verwaltung einer großen Anzahl von Funktionen führen. Der genaue Umfang einer Funktion wird durch den Anwendungsfall bestimmt.
Können Lambda-basierte Anwendungen in mehreren Regionen funktionieren?
Ja, viele serverlose Services bieten Replikation und Support für mehrere Regionen, darunter DynamoDB und Amazon S3. Lambda-Funktionen können als Teil einer Bereitstellungspipeline in mehreren Regionen bereitgestellt werden und API Gateway kann so konfiguriert werden, dass es diese Konfiguration unterstützt. Sehen Sie sich diese Beispielarchitektur
Können Lambda-Funktionen nach einem Zeitplan ausgeführt werden?
Ja, Sie können geplante Ausdrücke für Regeln verwenden EventBridge , um eine Lambda-Funktion auszulösen. Dieses Format verwendet die Cron-Syntax und kann mit einer Granularität von einer Minute festgelegt werden. Ein Beispiel finden Sie in diesem Tutorial.
Wie kann eine Lambda-Funktion den Zustand zwischen Aufrufen beibehalten?
In vielen Fällen ist eine DynamoDB-Tabelle eine ideale Methode zur Aufbewahrung, da sie Datenzugriff mit geringer Latenz ermöglicht und mit dem Lambda-Service skaliert werden kann. Sie können Daten auch in Amazon EFS for Lambda
Welche Arten von Workloads eignen sich für ereignisgesteuerte Architekturen?
Ereignisgesteuerte Architekturen kommunizieren systemübergreifend mithilfe von Netzwerken, was zu variabler Latenz führt. Für Workloads, die eine sehr geringe Latenz erfordern, wie z. B. Handelssysteme in Echtzeit, ist dieses Design möglicherweise nicht die beste Wahl. Für hoch skalierbare und verfügbare Workloads oder solche mit unvorhersehbaren Datenverkehrsmustern können ereignisgesteuerte Architekturen jedoch eine effektive Möglichkeit bieten, diese Anforderungen zu erfüllen.
Warum hat der Lambda-Service ein 15-Minuten-Limit für Funktionen?
Lambda-Funktionen dienen der Verarbeitung von Ereignissen und die meisten Ereignisse werden sehr schnell verarbeitet – in der Regel unter 1 Sekunde für die meisten Produktionsaufrufe. Die Dauer einer Funktion wird durch die Zeit bestimmt, die für die Verarbeitung eines Ereignisses benötigt wird. Zwar gibt es einige rechenintensive Workloads, die mehrere Minuten in Anspruch nehmen können, aber bei sehr wenigen dauert es 15 Minuten, bis sie abgeschlossen sind.
Wenn Sie feststellen, dass Sie eine längere Dauer benötigen, stellen Sie sicher, dass Ihr Funktionscode einzelne Ereignisse verarbeitet, einzelne Aufgaben ausführt und die in diesem Dokument beschriebenen bewährten Methoden anwendet. In vielen Fällen können Funktionen neu gestaltet werden, um einzelne Ereignisse zu verarbeiten und den Zeitaufwand für die Verarbeitung zu reduzieren.
Warum ist eine Funktion mit reservierter Gleichzeitigkeit nicht skalierbar, um den eingehenden Datenverkehr zu bewältigen?
Die reservierte Parallelität für eine Lambda-Funktion dient auch als maximaler Kapazitätswert. Die reservierte Gleichzeitigkeit für eine Lambda-Funktion dient auch als maximaler Kapazitätswert. Wenn Sie eine Funktion mit reservierter Parallelität benötigen, um mehr Verkehr zu verarbeiten, können Sie den Wert für reservierte Parallelität aktualisieren, wodurch der maximale Durchsatz Ihrer Funktion erhöht wird.
Warum kommt es bei einer Funktion mit bereitgestellter Parallelität immer noch zu Kaltstarts?
Sie können Kaltstarts messen, während Lambda aufsteigt, indem Sie Ihre Funktion um eine Röntgenüberwachung ergänzen. Eine Funktion, die bereitgestellte Parallelität verwendet, zeigt kein Kaltstartverhalten, da die Ausführungsumgebung vor dem Aufruf vorbereitet wird. Die bereitgestellte Parallelität muss jedoch auf eine bestimmte Version oder einen bestimmten Alias einer Funktion angewendet werden, nicht auf die $LATEST-Version. In Fällen, in denen weiterhin ein Kaltstartverhalten auftritt, stellen Sie sicher, dass Sie die Alias-Version aufrufen, in der die bereitgestellte Parallelität konfiguriert ist.
Was ist die beste Laufzeit für meine Lambda-Funktion?
Lambda ist unabhängig von Ihrer Wahl der Laufzeit. Für einfache Funktionen bieten interpretierte Sprachen wie Python und Node.js die schnellste Leistung. Bei Funktionen mit komplexeren Berechnungen lassen sich kompilierte Sprachen wie Java oft langsamer initialisieren, werden aber im Lambda-Handler schnell ausgeführt. Die Wahl der Laufzeit wird auch von der Präferenz der Entwickler und der Vertrautheit mit der Sprache beeinflusst.
Wie stelle ich sicher, dass sich die SDK-Version nicht ändert?
Die eingebettete SDKs Version kann sich ohne vorherige Ankündigung ändern, AWS wenn neue Dienste und Funktionen veröffentlicht werden. Sie können eine Version des SDK sperren, indem Sie eine Lambda-Ebene mit der jeweils benötigten Version erstellen. Die Funktion verwendet dann immer die Version in der Ebene, auch wenn sich die im Service eingebettete Version ändert.
Wie kann ich testen, ob eine Lambda-basierte Anwendung skaliert werden kann, um den erwarteten Datenverkehr zu bewältigen?
Um sicherzustellen, dass Ihre Anwendung erwartungsgemäß skaliert wird, verwenden Sie in Ihrem Entwicklungsprozess Lasttests, um das erwartete Verkehrsaufkommen zu simulieren.
Welche Workloads eignen sich für die Bereitstellung von Parallelität?
Provisioned Concurrency ist darauf ausgelegt, Funktionen mit Reaktionszeiten im zweistelligen Millisekundenbereich verfügbar zu machen. Im Allgemeinen profitieren interaktive Workloads am meisten von diesem Feature. Dabei handelt es sich um Anwendungen, bei denen Benutzer Anfragen initiieren, wie z. B. Web- und Mobilanwendungen und sie reagieren am empfindlichsten auf Latenz. Asynchrone Workloads, wie Datenverarbeitungspipelines, reagieren häufig weniger empfindlich auf Latenz und benötigen daher in der Regel keine bereitgestellte Parallelität.
Warum protokolliert meine Lambda-Funktion keine Ausgabe?
Wenn sich eine Lambda-Funktion nicht anmeldet CloudWatch, stellen Sie zunächst sicher, dass die Funktion vom Aufrufer aufgerufen wird. Überprüfen Sie die Protokolle des aufrufenden Dienstes und alle CloudWatch Messwerte, die darauf hinweisen, dass ein Ereignis die Funktion ausgelöst hat. Überprüfen Sie als Nächstes die CloudWatch Protokolle für die Funktion. Alle Lambda-Funktionen protokollieren drei Zeilen, auch wenn der benutzerdefinierte Code der Funktion keine weitere explizite Protokollierung enthält:

Wenn CloudWatch trotz des Aufrufs der Funktion keine Protokollierung angezeigt wird, überprüfen Sie die Berechtigungen der Funktion. Die IAM-Rolle muss Logging-Berechtigungen beinhalten, andernfalls kann die Funktion keine Protokolle in den Dienst schreiben. Sie können die AWSLambdaBasicExecutionRoleRichtlinie an die Ausführungsrolle Ihrer Funktion anhängen, um diese Berechtigungen zu gewähren.