Implementieren Sie Lambda Canary-Bereitstellungen mithilfe eines gewichteten Alias - 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.

Implementieren Sie Lambda Canary-Bereitstellungen mithilfe eines gewichteten Alias

Sie können einen gewichteten Alias verwenden, um den Datenverkehr auf zwei verschiedene Versionen derselben Funktion aufzuteilen. Mit diesem Ansatz können Sie neue Versionen Ihrer Funktionen mit einem kleinen Prozentsatz des Datenverkehrs testen und bei Bedarf schnell wieder zurücksetzen. Dies wird als Canary-Bereitstellung bezeichnet. Canary-Bereitstellungen unterscheiden sich von Blau/Grün-Bereitstellungen dadurch, dass die neue Version nur einem Teil der Anfragen ausgesetzt wird, anstatt den gesamten Datenverkehr auf einmal umzuleiten.

Sie können ein Alias auf maximal zwei Lambda-Funktionsversionen verweisen lassen. Die Versionen müssen folgende Kriterien erfüllen:

Anmerkung

Lambda verwendet ein einfaches probabilistisches Modell, um den Datenverkehr zwischen den beiden Funktionsversionen zu verteilen. Bei niedrigem Datenverkehr sehen Sie möglicherweise eine hohe Abweichung zwischen dem konfigurierten und dem tatsächlichen Prozentsatz des Datenverkehrs für jede Version. Wenn Ihre Funktion bereitgestellte Parallelität verwendet, können Sie Überlaufaufrufe durch Konfigurieren einer höheren Anzahl von bereitgestellten Parallelitätsinstances während des aktiven Alias-Routings vermeiden.

Einen gewichteten Alias erstellen

Console
So konfigurieren Sie das Routing für einen Alias über die Konsole
Anmerkung

Stellen Sie sicher, dass die Funktion über mindestens zwei veröffentlichte Versionen verfügt. Um weitere Versionen zu erstellen, folgen Sie den Anweisungen unter Erstellen von Funktionsversionen.

  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie Aliasse und dann Alias erstellen aus.

  4. Führen Sie auf der Seite Alias erstellen die folgenden Schritte aus:

    1. Machen Sie für den Alias eine Angabe unter Name.

    2. (Optional) Geben Sie eine Beschreibung für den Alias ein.

    3. Wählen Sie unter Version die erste Funktionsversion aus, auf die der Alias verweisen soll.

    4. Erweitern Sie Gewichteter Alias.

    5. Wählen Sie unter Zusätzliche Version die zweite Funktionsversion aus, auf die der Alias verweisen soll.

    6. Geben Sie unter Gewicht (%) einen Gewichtungswert für die Funktion ein. Die Gewichtung ist der Prozentsatz des Datenverkehrs, der beim Aufruf des Alias dieser Version zugewiesen wird. Die erste Version erhält den Datenverkehr mit der verbleibenden Gewichtung. Wenn Sie beispielsweise 10 Prozent für die Additional version (Zusätzliche Version) angeben, werden der ersten Version automatisch 90 Prozent zugewiesen.

    7. Wählen Sie Save (Speichern) aus.

AWS CLI

Verwenden Sie die AWS CLI Befehle create-alias und update-alias, um die Verkehrsgewichte zwischen zwei Funktionsversionen zu konfigurieren. Wenn Sie den Alias erstellen oder aktualisieren, geben Sie die Datenverkehrsgewichtung im routing-config-Parameter an.

Im folgenden Beispiel wird ein Lambda-Funktionsalias namens routing-alias erstellt, der auf Version 1 der Funktion verweist. Version 2 der Funktion erhält 3 Prozent des Datenverkehrs. Die verbleibenden 97 Prozent des Datenverkehrs werden zu Version 1 weitergeleitet.

aws lambda create-alias \ --name routing-alias \ --function-name my-function \ --function-version 1 \ --routing-config AdditionalVersionWeights={"2"=0.03}

Verwenden Sie den update-alias-Befehl, um den Prozentsatz des eingehenden Datenverkehrs an Version 2 zu erhöhen. Im folgenden Beispiel erhöhen Sie den Datenverkehr auf 5 Prozent.

aws lambda update-alias \ --name routing-alias \ --function-name my-function \ --routing-config AdditionalVersionWeights={"2"=0.05}

Um den gesamten Datenverkehr an Version 2 weiterzuleiten, ändern Sie den Befehl update-alias, um die Eigenschaft function-version so zu ändern, dass der Alias auf Version 2 verweist. Der Befehl setzt auch die Weiterleitungskonfiguration zurück.

aws lambda update-alias \ --name routing-alias \ --function-name my-function \ --function-version 2 \ --routing-config AdditionalVersionWeights={}

Die AWS CLI Befehle in den vorherigen Schritten entsprechen den folgenden Lambda-API-Operationen:

Feststellen, welche Version aufgerufen wurde

Wenn Sie Datenverkehrsgewichtungen zwischen zwei Funktionsversionen konfigurieren, gibt es zwei Möglichkeiten, die aufgerufene Lambda-Funktionsversion zu bestimmen:

  • CloudWatch Logs — Lambda gibt automatisch einen START Protokolleintrag aus, der die aufgerufene Versions-ID für jeden Funktionsaufruf enthält. Beispiel:

    START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version: 2

    Für Aliasaufrufe verwendet Lambda die Dimension ExecutedVersion zum Filtern der Metrikdaten nach aufgerufener Version. Weitere Informationen finden Sie unter Anzeigen von Metriken für Lambda-Funktionen.

  • Antwortnutzlast (synchrone Aufrufe) – Antworten auf synchrone Funktionsaufrufe enthalten einen x-amz-executed-version-Header, der angibt, welche Funktionsversion aufgerufen wurde.

Erstellen Sie eine fortlaufende Bereitstellung mit gewichteten Aliasnamen

Verwenden Sie AWS CodeDeploy und AWS Serverless Application Model (AWS SAM), um eine fortlaufende Bereitstellung zu erstellen, die automatisch Änderungen an Ihrem Funktionscode erkennt, eine neue Version Ihrer Funktion bereitstellt und die Menge des Datenverkehrs, der zur neuen Version fließt, schrittweise erhöht. Der Datenverkehr und die Erhöhungsrate sind Parameter, die Sie konfigurieren können.

AWS SAM Führt in einer fortlaufenden Bereitstellung die folgenden Aufgaben aus:

  • Konfiguriert Ihre Lambda-Funktion und erstellt einen Alias. Die gewichtete Alias-Weiterleitungskonfiguration ist die zugrunde liegende Funktion, die die fortlaufende Bereitstellung implementiert.

  • Erstellt eine CodeDeploy Anwendung und eine Bereitstellungsgruppe. Die Bereitstellungsgruppe verwaltet die fortlaufende Bereitstellung und das Rollback, falls erforderlich.

  • Erkennt, wenn Sie eine neue Version Ihrer Lambda-Funktion erstellen.

  • Löst aus CodeDeploy , um die Bereitstellung der neuen Version zu starten.

Beispiel für AWS SAM eine Vorlage

Das folgende Beispiel zeigt eine AWS SAM -Vorlage für eine einfache fortlaufende Bereitstellung.

AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: A sample SAM template for deploying Lambda functions Resources: # Details about the myDateTimeFunction Lambda function myDateTimeFunction: Type: AWS::Serverless::Function Properties: Handler: myDateTimeFunction.handler Runtime: nodejs18.x # Creates an alias named "live" for the function, and automatically publishes when you update the function. AutoPublishAlias: live DeploymentPreference: # Specifies the deployment configuration Type: Linear10PercentEvery2Minutes

Diese Vorlage definiert eine Lambda-Funktion mit der Bezeichnung myDateTimeFunction und den folgenden Eigenschaften.

AutoPublishAlias

Die AutoPublishAlias-Eigenschaft erstellt einen Alias mit der Bezeichnung live. Darüber hinaus erkennt das AWS SAM -Framework automatisch, wenn Sie neuen Code für die Funktion speichern. Das Framework veröffentlicht dann eine neue Funktionsversion und aktualisiert den live-Alias so, dass er auf die neue Version verweist.

DeploymentPreference

Die DeploymentPreference Eigenschaft bestimmt die Geschwindigkeit, mit der die CodeDeploy Anwendung den Datenverkehr von der ursprünglichen Version der Lambda-Funktion auf die neue Version verlagert. Der Wert Linear10PercentEvery2Minutes verschiebt alle zwei Minuten weitere zehn Prozent des Datenverkehrs zur neuen Version.

Eine Liste der vordefinierten Bereitstellungskonfigurationen finden Sie unter Bereitstellungskonfigurationen.

Weitere Informationen zum Erstellen fortlaufender Bereitstellungen mit CodeDeploy und AWS SAM finden Sie im Folgenden: