Lambda-Laufzeitaktualisierungen - AWS Lambda

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.

Lambda-Laufzeitaktualisierungen

Lambda hält jede verwaltete Laufzeit mit Sicherheitsupdates, Fehlerbehebungen, neuen Funktionen, Leistungsverbesserungen und Unterstützung für Nebenversionen auf dem neuesten Stand. Diese Laufzeitaktualisierungen werden als Laufzeitversionen veröffentlicht. Lambda wendet Laufzeitaktualisierungen auf Funktionen an, indem es die Funktion von einer früheren Laufzeitversion auf eine neue Laufzeitversion migriert.

Für Funktionen, die verwaltete Laufzeiten verwenden, wendet Lambda Laufzeitaktualisierungen standardmäßig automatisch an. Mit automatischen Laufzeitaktualisierungen übernimmt Lambda den operativen Aufwand für das Patchen der Laufzeitversionen. Für die meisten Kunden sind automatische Aktualisierungen die richtige Wahl. Weitere Informationen finden Sie unter Kontrollen der Laufzeitverwaltung.

Lambda veröffentlicht auch jede neue Laufzeitversion als Container-Image. Um Laufzeitversionen für Container-basierte Funktionen zu aktualisieren, müssen Sie ein neues Container-Image aus dem aktualisierten Basis-Image erstellen und Ihre Funktion erneut bereitstellen.

Jeder Laufzeitversion ist eine Versionsnummer und ein ARN (Amazon Resource Name) zugeordnet. Laufzeitversionsnummern verwenden ein von Lambda definiertes Nummerierungsschema, unabhängig von den Versionsnummern, die die Programmiersprache verwendet. Der Laufzeitversions-ARN ist eine eindeutige Kennung für jede Laufzeitversion.

Sie können den ARN der aktuellen Laufzeitversion Ihrer Funktion in der INIT_START-Zeile Ihrer Funktionsprotokolle und in der Lambda-Konsole anzeigen.

Laufzeitversionen sollten nicht mit Laufzeitkennungen verwechselt werden. Jede Laufzeit hat eine eindeutige Laufzeitkennung, z. B. python3.9 oder nodejs18.x. Diese entsprechen den jeweiligen Hauptversionen der Programmiersprachen. Laufzeitversionen beschreiben die Patch-Version einer einzelnen Laufzeit.

Anmerkung

Der ARN für dieselbe Laufzeitversionsnummer kann zwischen AWS-Regionen und CPU-Architekturen variieren.

Kontrollen der Laufzeitverwaltung

Lambda ist bestrebt, Laufzeitaktualisierungen bereitzustellen, die mit vorhandenen Funktionen abwärtskompatibel sind. Wie beim Software-Patching gibt es jedoch seltene Fälle, in denen sich eine Laufzeitaktualisierung negativ auf eine vorhandene Funktion auswirken kann. Beispielsweise können Sicherheits-Patches ein zugrunde liegendes Problem mit einer vorhandenen Funktion aufdecken, das vom vorherigen, unsicheren Verhalten abhängt. Lambda-Laufzeitverwaltungskontrollen tragen dazu bei, das Risiko von Auswirkungen auf Ihre Workloads im seltenen Fall einer Inkompatibilität einer Laufzeitversion zu verringern. Für jede Funktionsversion ($LATEST oder veröffentlichte Version) können Sie einen der folgenden Laufzeitaktualisierungsmodi wählen:

  • Automatisch (Standard) – Automatische Aktualisierung auf die neueste und sicherste Laufzeitversion mit Zweiphasiges Rollout der Laufzeitversion. Diesen Modus empfehlen wir den meisten Kunden, damit Sie immer von Laufzeitaktualisierungen profitieren.

  • Funktion aktualisieren – Aktualisieren Sie die Laufzeit Ihrer Funktion auf die neueste und sicherste Laufzeitversion. Wenn Sie Ihre Funktion aktualisieren, aktualisiert Lambda die Laufzeit Ihrer Funktion auf die neueste und sicherste Laufzeitversion. Dieser Ansatz synchronisiert Laufzeitaktualisierungen mit Funktionsbereitstellungen, sodass Sie die Kontrolle darüber haben, wann Lambda Laufzeitaktualisierungen anwendet. In diesem Modus können Sie seltene Inkompatibilitäten bei Laufzeitaktualisierungen frühzeitig erkennen und beheben. Wenn Sie diesen Modus verwenden, müssen Sie Ihre Funktionen regelmäßig aktualisieren, um deren Laufzeit auf dem neuesten Stand zu halten.

  • Manuell – Aktualisieren Sie Ihre Laufzeitversion manuell. Sie geben in Ihrer Funktionskonfiguration eine Laufzeitversion an. Die Funktion verwendet diese Laufzeitversion unbegrenzt. In dem seltenen Fall, dass eine neue Laufzeitversion mit einer vorhandenen Funktion nicht kompatibel ist, können Sie diesen Modus verwenden, um Ihre Funktion auf eine frühere Laufzeitversion zurückzusetzen. Wir raten davon ab, den Modus Manual (Manuell) zu verwenden, um Laufzeitkonsistenz über Bereitstellungen hinweg zu erreichen. Weitere Informationen finden Sie unter Zurücksetzen einer Laufzeitversion.

Die Verantwortung für das Anwenden von Laufzeitaktualisierungen auf Ihre Funktionen hängt davon ab, welchen Laufzeitaktualisierungsmodus Sie auswählen. Weitere Informationen finden Sie unter Modell der geteilten Verantwortung.

Zweiphasiges Rollout der Laufzeitversion

Lambda führt neue Laufzeitversionen in der folgenden Reihenfolge ein:

  1. In der ersten Phase wendet Lambda die neue Laufzeitversion an, sobald Sie eine Funktion erstellen oder aktualisieren. Eine Funktion wird aktualisiert, wenn Sie die - UpdateFunctionCode oder UpdateFunctionConfiguration-API-Operationen aufrufen.

  2. In der zweiten Phase aktualisiert Lambda alle Funktionen, die den Auto (Automatischen) Laufzeitaktualisierungsmodus verwenden und die noch nicht auf die neue Laufzeitversion aktualisiert wurden.

Die Gesamtdauer des Rollout-Prozesses hängt von mehreren Faktoren ab, einschließlich des Schweregrads von Sicherheits-Patches, die in der Laufzeitaktualisierung enthalten sind.

Wenn Sie Ihre Funktionen aktiv entwickeln und bereitstellen, werden Sie höchstwahrscheinlich in der ersten Phase neue Laufzeitversionen abrufen. Dadurch werden Laufzeitaktualisierungen mit Funktionsaktualisierungen synchronisiert. In dem seltenen Fall, dass die neueste Laufzeitversion Ihre Anwendung negativ beeinflusst, können Sie mit diesem Ansatz, umgehend Korrekturmaßnahmen ergreifen. Funktionen, die sich nicht in der aktiven Entwicklung befinden, erhalten auch in der zweiten Phase den operativen Nutzen von automatischen Laufzeitaktualisierungen.

Dieser Ansatz wirkt sich nicht auf Funktionen aus, die auf Function update (Funktionsaktualisierung) oder Manual (Manuell) festgelegt sind. Funktionen, die den Modus Function update (Funktionsaktualisierung) verwenden, erhalten die neuesten Laufzeitaktualisierungen nur, wenn Sie sie erstellen oder aktualisieren. Funktionen, die den Modus Manual (Manuell) verwenden, erhalten keine Laufzeitaktualisierungen.

Lambda veröffentlicht neue Laufzeitversionen schrittweise und fortlaufend in allen AWS-Regionen. Wenn Ihre Funktionen auf die Modi Auto (Automatisch) oder Function update (Funktionsaktualisierung) festgelegt sind, ist es möglich, dass Funktionen, die zur gleichen Zeit in verschiedenen Regionen oder zu verschiedenen Zeiten in derselben Region eingesetzt werden, unterschiedliche Laufzeitversionen abrufen. Kunden, die eine garantierte Konsistenz der Laufzeitversionen in ihren Umgebungen benötigen, sollten Container-Images verwenden, um ihre Lambda-Funktionen bereitzustellen. Der Modus Manuell ist als vorübergehende Gegenmaßnahme gedacht, um im seltenen Fall eines Laufzeitzeitproblems ein Laufzeit-Rollback zu ermöglichen, dass eine Laufzeitversion nicht mit Ihrer Funktion kompatibel ist.

Zurücksetzen einer Laufzeitversion

In dem seltenen Ereignis, dass eine neue Laufzeitversion nicht mit Ihrer vorhandenen Funktion kompatibel ist, können Sie deren Laufzeitversion auf eine frühere Version zurücksetzen. Dadurch bleibt Ihre Anwendung funktionsfähig und die Unterbrechung wird minimiert. Gleichzeitig wird Zeit bereitgestellt, um die Inkompatibilität zu beheben, bevor Sie zur neuesten Laufzeitversion zurückkehren.

Lambda legt keine zeitliche Begrenzung fest, wie lange Sie eine bestimmte Laufzeitversion verwenden können. Wir empfehlen jedoch dringend, so schnell wie möglich auf die neueste Laufzeitversion zu aktualisieren, um von den neuesten Sicherheits-Patches, Leistungsverbesserungen und Funktionen zu profitieren. Lambda bietet die Option, auf eine frühere Laufzeitversion zurückzusetzen, nur als vorübergehende Abhilfe für den seltenen Fall eines Kompatibilitätsproblems bei Laufzeitaktualisierungen. Bei Funktionen, die über einen längeren Zeitraum eine frühere Laufzeitversion verwenden, kann es zu Leistungseinbußen oder Problemen kommen, wie z. B. dem Ablauf eines Zertifikats, was dazu führen kann, dass sie nicht mehr richtig funktionieren.

Sie können eine Laufzeitversion auf die folgenden Arten zurücksetzen:

Weitere Informationen finden Sie unter Einführung von AWS Lambda-Laufzeitverwaltungs-Kontrollen im AWS-Computing-Blog.

Rollback einer Laufzeitversion mit dem Manual (Manuellen) Laufzeitaktualisierungsmodus

Wenn Sie den Auto (Automatischen) Aktualisierungsmodus für die Laufzeitversion oder die $LATEST-Laufzeitversion verwenden, können Sie Ihre Laufzeitversion im Manual (Manuellen) Modus zurücksetzen. Ändern Sie für die Funktionsversion, die Sie zurücksetzen möchten, den Aktualisierungsmodus der Laufzeitversion zu Manual (Manuell) und geben Sie den ARN der vorherigen Laufzeitversion an. Weitere Informationen zum Ermitteln des ARN der vorherigen Laufzeitversion finden Sie unter Identifizieren von Änderungen der Laufzeitversion.

Anmerkung

Wenn die $LATEST-Version Ihrer Funktion für den Modus Manual (Manuell) konfiguriert ist, können Sie die von Ihrer Funktion verwendete CPU-Architektur oder Laufzeitversion nicht ändern. Um diese Änderungen vorzunehmen, müssen Sie in den Modus Auto (Automatisch) oder Function update (Funktionsaktualisierung) wechseln.

Rollback einer Laufzeitversion mit veröffentlichten Funktionsversionen

Veröffentlichte Funktionsversionen sind eine unveränderliche Momentaufnahme des $LATEST-Funktionscodes und der Konfiguration zum Zeitpunkt ihrer Erstellung. Im Modus Auto (Automatisch) aktualisiert Lambda während der zweiten Phase des Rollouts der Laufzeitversion automatisch die Laufzeitversion der veröffentlichten Funktionsversionen. Im Modus Function update (Funktionsaktualisierung) aktualisiert Lambda die Laufzeitversion veröffentlichter Funktionsversionen nicht.

Veröffentlichte Funktionsversionen, die den Modus Function update (Funktionsaktualisierung) verwenden, erstellen daher einen statischen Snapshot des Funktionscodes, der Konfiguration und der Laufzeitversion. Wenn Sie den Modus Function update (Funktionsaktualisierung) mit Funktionsversionen verwenden, können Sie Laufzeitaktualisierungen mit Ihren Bereitstellungen synchronisieren. Sie können auch das Rollback von Code-, Konfigurations- und Laufzeitversionen koordinieren, indem Sie den Datenverkehr auf eine zuvor veröffentlichte Funktionsversion umleiten. Sie können diesen Ansatz in Ihre kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) integrieren, um im seltenen Fall einer Inkompatibilität von Laufzeitaktualisierungen ein vollautomatisches Rollback durchzuführen. Wenn Sie diesen Ansatz verwenden, müssen Sie Ihre Funktion regelmäßig aktualisieren und neue Funktionsversionen veröffentlichen, um die neuesten Laufzeitaktualisierungen zu erhalten. Weitere Informationen finden Sie unter Modell der geteilten Verantwortung.

Identifizieren von Änderungen der Laufzeitversion

Die Laufzeitversionsnummer und der ARN werden in der INIT_START Protokollzeile protokolliert, die Lambda jedes Mal an CloudWatch Logs ausgibt, wenn es eine neue Ausführungsumgebung erstellt. Da die Ausführungsumgebung für alle Funktionsaufrufe dieselbeLaufzeit verwendet, gibt Lambda die INIT_START-Protokollzeile nur aus, wenn Lambda die Init-Phase ausführt. Lambda gibt diese Protokollzeile nicht für jeden Funktionsaufruf aus. Lambda gibt die Protokollzeile an CloudWatch Protokolle aus, sie ist jedoch in der Konsole nicht sichtbar.

Beispiel für die INIT_START-Protokollzeile
INIT_START Runtime Version: python:3.9.v14    Runtime Version ARN: arn:aws:lambda:eu-south-1::runtime:7b620fc2e66107a1046b140b9d320295811af3ad5d4c6a011fad1fa65127e9e6I

Anstatt direkt mit den Protokollen zu arbeiten, können Sie Amazon CloudWatch Contributor Insights verwenden, um Übergänge zwischen Laufzeitversionen zu identifizieren. Die folgende Regel zählt die verschiedenen Laufzeitversionen aus jeder INIT_START-Protokollzeile. Um die Regel zu verwenden, ersetzen Sie den Beispiel-Protokollgruppennamen /aws/lambda/* durch das entsprechende Präfix für Ihre Funktion oder Funktionsgruppe.

{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "AggregateOn": "Count", "Contribution": { "Filters": [ { "Match": "eventType", "In": [ "INIT_START" ] } ], "Keys": [ "runtimeVersion", "runtimeVersionArn" ] }, "LogFormat": "CLF", "LogGroupNames": [ "/aws/lambda/*" ], "Fields": { "1": "eventType", "4": "runtimeVersion", "8": "runtimeVersionArn" } }

Der folgende CloudWatch Contributor-Insights-Bericht zeigt ein Beispiel für einen Laufzeitversionsübergang, wie er von der vorherigen Regel erfasst wird. Die orange Linie zeigt die Initialisierung der Ausführungsumgebung für die frühere Laufzeitversion (python:3.9.v12), während die blaue Linie die Initialisierung der Ausführungsumgebung für die neue Laufzeitversion (python:3.9.v14) anzeigt.

Diagramm, das den Übergang von einer Laufzeitversion zu einer anderen zeigt.

Konfigurieren von Einstellungen für die Laufzeitverwaltung

Sie können die Laufzeitverwaltungseinstellungen mithilfe der Lambda-Konsole oder der AWS Command Line Interface (AWS CLI) konfigurieren.

Anmerkung

Sie können die Laufzeitverwaltungseinstellungen für jede Funktionsversion separat konfigurieren.

So konfigurieren Sie, wie Lambda Ihre Laufzeitversion aktualisiert (Konsole)
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen einer Funktion aus.

  3. Wählen Sie auf der Registerkarte Code unter Runtime settings (Laufzeiteinstellungen) die Option Edit runtime management configuration (Laufzeitverwaltungskonfiguration bearbeiten) aus.

  4. Wählen Sie unter Runtime management configuration (Laufzeitverwaltungskonfiguration) eine der folgenden Optionen aus:

    • Um Ihre Funktion automatisch auf die neueste Laufzeitversion aktualisieren zu lassen, wählen Sie Auto (Automatisch).

    • Um Ihre Funktion auf die neueste Laufzeitversion zu aktualisieren, wenn Sie die Funktion ändern, wählen Sie Function update (Funktionsaktualisierung).

    • Damit Ihre Funktion nur dann auf die neueste Laufzeitversion aktualisiert wird, wenn Sie den Laufzeitversions-ARN ändern, wählen Sie Manual (Manuell).

      Anmerkung

      Sie finden den Laufzeitversions-ARN unter Runtime management configuration (Laufzeitverwaltungskonfiguration). Sie finden den ARN auch in der INIT_START-Zeile Ihrer Funktionsprotokolle.

  5. Wählen Sie Speichern.

So konfigurieren Sie, wie Lambda Ihre Laufzeitversion aktualisiert (AWS CLI)

Um die Laufzeitverwaltung für eine Funktion zu konfigurieren, können Sie den put-runtime-management-config AWS CLI-Befehl zusammen mit dem Laufzeitaktualisierungsmodus verwenden. Wenn Sie den Manual-Modus verwenden, müssen Sie auch den ARN der Laufzeitversion angeben.

aws lambda put-runtime-management-config --function-name arn:aws:lambda:eu-west-1:069549076217:function:myfunction --update-runtime-on Manual --runtime-version-arn arn:aws:lambda:eu-west-1::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1

Die Ausgabe sollte folgendermaßen oder ähnlich aussehen:

{ "UpdateRuntimeOn": "Manual", "FunctionArn": "arn:aws:lambda:eu-west-1:069549076217:function:myfunction", "RuntimeVersionArn": "arn:aws:lambda:eu-west-1::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1" }

Modell der geteilten Verantwortung

Lambda ist für das Kuratieren und Veröffentlichen von Sicherheitsupdates für alle unterstützten verwalteten Laufzeiten und Container-Images verantwortlich. Die Verantwortung für die Aktualisierung vorhandener Funktionen zur Verwendung der neuesten Laufzeitversion hängt davon ab, welchen Laufzeitaktualisierungsmodus Sie verwenden.

Lambda ist dafür verantwortlich, Laufzeitaktualisierungen auf alle Funktionen anzuwenden, die für den Laufzeitaktualisierungsmodus Auto (Automatisch) konfiguriert sind.

Für Funktionen, die mit dem Laufzeitaktualisierungsmodus Function update (Funktionsaktualisierung) konfiguriert sind, sind Sie für die regelmäßige Aktualisierung Ihrer Funktion verantwortlich. Lambda ist dafür verantwortlich, Laufzeitaktualisierungen anzuwenden, wenn Sie diese Aktualisierungen vornehmen. Wenn Sie Ihre Funktion nicht aktualisieren, aktualisiert Lambda die Laufzeit nicht. Wenn Sie Ihre Funktion nicht regelmäßig aktualisieren, empfehlen wir dringend, diese für automatische Laufzeitaktualisierungen zu konfigurieren, damit sie weiterhin Sicherheitsupdates erhält.

Bei Funktionen, die für den Laufzeitaktualisierungsmodus Manual (Manuell) konfiguriert sind, sind Sie dafür verantwortlich, Ihre Funktion zu aktualisieren, damit sie die neueste Laufzeitversion verwendet. Wir empfehlen dringend, diesen Modus nur zu verwenden, um im seltenen Ereignis einer Inkompatibilität der Laufzeitaktualisierung die Laufzeitversion vorübergehend zurückzusetzen. Wir empfehlen Ihnen außerdem, so schnell wie möglich in den Modus Auto (Automatisch) zu wechseln, um die Zeit zu minimieren, in der Ihre Funktionen nicht gepatcht werden.

Wenn Sie Container-Images zum Bereitstellen Ihrer Funktionen verwenden, ist Lambda für das Veröffentlichen aktualisierter Basis-Images verantwortlich. In diesem Fall sind Sie dafür verantwortlich, das Container-Image Ihrer Funktion aus dem neuesten Basis-Image neu zu erstellen und das Container-Image erneut bereitzustellen.

Dies ist in der folgenden Tabelle zusammengefasst:

Bereitstellungsmodus Verantwortung von Lambda Verantwortung des Kunden
Verwaltete Laufzeit, Modus Auto (Automatisch)

Veröffentlichen Sie neue Laufzeitversionen mit den neuesten Patches.

Wenden Sie Laufzeit-Patches auf vorhandene Funktionen an.

Führen Sie im seltenen Fall eines Kompatibilitätsproblems bei Laufzeitaktualisierungen ein Rollback auf eine frühere Laufzeitversion durch.
Verwaltete Laufzeit, Modus Function update (Funktionsaktualisierung) Veröffentlichen Sie neue Laufzeitversionen mit den neuesten Patches.

Aktualisieren Sie die Funktionen regelmäßig, um die neueste Laufzeitversion zu erhalten.

Schalten Sie eine Funktion in den Modus Auto (Automatisch), wenn Sie die Funktion nicht regelmäßig aktualisieren.

Führen Sie im seltenen Fall eines Kompatibilitätsproblems bei Laufzeitaktualisierungen ein Rollback auf eine frühere Laufzeitversion durch.

Verwaltete Laufzeit, Modus Manual (Manuell) Veröffentlichen Sie neue Laufzeitversionen mit den neuesten Patches.

Verwenden Sie diesen Modus nur für ein vorübergehendes Laufzeit-Rollback im seltenen Fall eines Kompatibilitätsproblems bei der Aktualisierung.

Schalten Sie die Funktionen so schnell wie möglich in den Modus Auto (Automatisch) oder Function update (Funktionsaktualisierung) und auf die neueste Laufzeitversion.

Container-Image Veröffentlichen Sie neue Container-Images mit den neuesten Patches. Stellen Sie die Funktionen regelmäßig neu bereit, indem Sie das neueste Container-Basis-Image verwenden, um die neuesten Patches abzurufen.

Weitere Informationen zur geteilten Verantwortung mit AWS finden Sie unter Modell der geteilten Verantwortung auf der AWS Cloud-Sicherheitsseite.

Anwendungen mit hoher Compliance

Um Patching-Anforderungen zu erfüllen, verlassen sich Lambda-Kunden in der Regel auf automatische Laufzeitaktualisierungen. Wenn Ihre Anwendung strengen Anforderungen an die Aktualität von Patches unterliegt, sollten Sie die Verwendung früherer Laufzeitversionen einschränken. Sie können die Laufzeitverwaltungskontrollen von Lambda einschränken, indem Sie AWS Identity and Access Management (IAM) verwenden, um Benutzern in Ihrem AWS Konto den Zugriff auf den PutRuntimeManagementConfig API-Vorgang zu verweigern. Dieser Vorgang wird verwendet, um den Laufzeitaktualisierungsmodus für eine Funktion auszuwählen. Wenn Sie den Zugriff auf diesen Vorgang verweigern, werden alle Funktionen standardmäßig auf den Modus Auto (Automatisch) umgestellt. Sie können diese Einschränkung unternehmensweit anwenden, indem Sie Service-Kontrollrichtlinien (SCP) verwenden. Für den Fall, dass Sie eine Funktion auf eine frühere Laufzeitversion zurücksetzen müssen, können Sie eine Richtlinienausnahme auf der case-by-case Grundlage von gewähren.