Wie konfiguriere ich Lambda-Funktionen als Ziele für Application Load Balancer und behebe damit verbundene Probleme?

Lesedauer: 5 Minute
0

Ich muss AWS Lambda-Funktionen als Ziele für Application Load Balancers konfigurieren und wissen, wie ich Probleme beheben kann, auf die ich stoßen könnte.

Lösung

Elastic Load Balancing unterstützt die Verwendung von Lambda-Funktionen als Ziele für die Verarbeitung von Anfragen von Application Load Balancers. Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit einem Application Load Balancer.

Schritt 1: Lambda-Funktion erstellen

1.Öffnen Sie die Funktionsseite der Lambda-Konsole.

2.Wählen Sie Funktion erstellen aus.

3.Wählen Sie Neu erstellen aus.

4.Geben Sie einen Funktionsnamen ein.

  1. Wählen Sie in der Laufzeit-Dropdown-Liste Python 3.9 als Laufzeit für dieses Szenario aus.

6.Wählen Sie für die Ausführungsrolle die Option Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen aus.

Hinweis: Weitere Informationen zu Ausführungsrollen finden Sie unter Lambda-Ausführungsrolle.

7.Wählen Sie Funktion erstellen aus.

8.Nachdem die Funktion erstellt wurde, wählen Sie die Registerkarte Code aus. Ersetzen Sie im Abschnitt Codequelle den vorhandenen Funktionscode durch den folgenden Code:

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.Wählen Sie Bereitstellen aus.

Schritt 2: Eine Zielgruppe für die Lambda-Funktion erstellen

Hinweis: Weitere Informationen finden Sie in Schritt 1: Zielgruppe konfigurieren.

1.Öffnen Sie die Amazon EC2-Konsole.

2.Wählen Sie im Navigationsbereich unter Load Balancing die Option Zielgruppen aus.

3.Wählen Sie Zielgruppe erstellen aus.

4.Wählen Sie unter Grundlegende Konfiguration für Zieltyp auswählen Lambda-Funktion aus.

5.Geben Sie unter Zielgruppenname einen Namen für die Zielgruppe ein.

6.(Optional) Um die Zustandsprüfungen zu aktivieren, wählen Sie im Abschnitt Zustandsprüfungen die Option Aktivieren aus.

7.(Optional) Fügen Sie einen oder mehrere Tags wie folgt hinzu:

  • Erweitern Sie den Abschnitt Tags.
  • Wählen Sie Tag hinzufügen aus.
  • Geben Sie den Tag-Schlüssel und den Tag-Wert ein.

8.Wählen Sie Weiter aus.

9.Wählen Sie eine Lambda-Funktion als Ziel.
-oder-
Wählen Sie Funktion später hinzufügen aus, um später eine Lambda-Funktion anzugeben.

10.Wählen Sie Zielgruppe erstellen aus.

Hinweis: Load Balancer-Berechtigungen zum Aufrufen einer Lambda-Funktion werden je nach Methode, die verwendet wird, um eine Zielgruppe zu erstellen und eine Funktion zu registrieren, unterschiedlich gewährt. Weitere Informationen finden Sie unter Berechtigungen zum Aufrufen der Lambda-Funktion.

Schritt 3: Einen Load Balancer und einen Listener konfigurieren

Gehen Sie wie in Schritt 3 beschrieben vor, um einen Load Balancer und einen Listener zu konfigurieren: Konfigurieren Sie einen Load Balancer und einen Listener.

Schritt 4: Den Load Balancer testen

Gehen Sie wie in Schritt 4 beschrieben vor, um den Load Balancer zu testen: Testen Sie den Load Balancer. Wenn das Setup funktioniert, zeigt der Browser die Meldung „Hallo von Lambda!“ an

Hinweis: Wenn Sie die Zustandsprüfungen für Ihre Lambda-Funktion nicht aktiviert haben, ist der Zustandsstatus nicht verfügbar. Sie können den Load Balancer ohne Zustandsprüfung testen, da er die Lambda-Funktionen als Ziele für Application Load Balancers nicht beeinträchtigt.

Grenzwerte für Lambda-Funktionen als Ziele

Weitere Informationen zu den Grenzwerten von Lambda-Funktionen als Ziele finden Sie unter Lambda-Funktionen als Ziele und in den Informationen unter Grenzwerte.

Lambda-Zielgruppen sind auf ein einzelnes Lambda-Funktionsziel beschränkt. Weitere Informationen finden Sie unter Vorbereiten der Lambda-Funktion.

Häufige Fehler von Lambda-Funktionen als Ziele

„Die Verbindung ist abgelaufen“

Dieser Fehler weist darauf hin, dass die Sicherheitsgruppen für Ihren Load Balancer keinen Datenverkehr auf dem Listener-Port zulassen. Um diesen Fehler zu beheben, verwalten Sie Ihre Sicherheitsgruppen und stellen Sie sicher, dass die Regeln für eingehenden Datenverkehr Ihrer Sicherheitsgruppe eingehenden Datenverkehr über Listener-Ports zulassen. Regeln für ausgehenden Datenverkehr sind für Sicherheitsgruppen nicht erforderlich, da Sicherheitsgruppen zustandsorientiert sind. Antworten auf erlaubten eingehenden Datenverkehr dürfen unabhängig von den Regeln für ausgehenden Datenverkehr abfließen.

„Die Zielgruppe konnte nicht gefunden werden“

Dieser Fehler weist darauf hin, dass die Zielgruppe gelöscht wurde. Um diesen Fehler zu beheben, löschen Sie die Ressourcenrichtlinie mit der gelöschten Zielgruppe. Durch das Löschen der Ressourcenrichtlinie wird der Trigger entfernt.

1.Öffnen Sie die Funktionsseite der Lambda-Konsole.

2.Wählen Sie die Lambda-Funktion, die sich auf die Zielgruppe bezieht.

3.Wählen Sie die Registerkarte Konfiguration und anschließend Berechtigungen aus.

4.Scrollen Sie nach unten zum Abschnitt Ressourcenbasierte Richtlinienerklärungen und wählen Sie dann die Richtlinie aus, die Sie entfernen möchten.

5.Wählen Sie Löschen und dann in der Warnmeldung Löschen aus, um zu bestätigen, dass Sie die Richtlinienerklärung dauerhaft aus der Ressourcenrichtlinie löschen möchten.

Sie können auch den folgenden AWS Command Line Interface (AWS CLI)-Befehl remove-permission verwenden, um die ressourcenbasierte Richtlinie zu entfernen:

Hinweis: Ersetzen Sie im folgenden Befehl EXAMPLE_FUNCTION durch Ihren Lambda-Funktionsnamen und EXAMPLE_ID durch Ihre Aussagen-ID.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

„Beim Aufrufen der RegisterTargets-Operation ist ein Fehler aufgetreten (AccessDenied): Der elasticloadbalancing-Prinzipal hat keine Berechtigung, den arn <Lambda ARN> aus der Zielgruppe aufzurufen <Target Group ARN>

Wenn eine Anforderung an eine Lambda-Funktion fehlschlägt, speichert der Load Balancer einen Ursachencode im Feld error_reason des Zugriffsprotokolls. Der Load Balancer erhöht zudem die entsprechende Amazon CloudWatch-Metrik. Weitere Informationen finden Sie unter Fehlerursachencodes.

Registrieren Sie eine Lambda-Funktion mit der AWS-CLI als Ziel. Verwenden Sie den AWS-CLI-Befehl add-permission, um Elastic Load Balancing die Berechtigung zum Aufrufen Ihrer Lambda-Funktion zu gewähren.

Bekannte Fehler von Lambda-Funktionen als Ziele

„Neue Metriken im Zusammenhang mit dieser Funktion (LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes und StandardProcessedBytes) sind im ELB-Konsolenüberwachungspanel nicht verfügbar.“

Greifen Sie über die Amazon CloudWatch-Konsole auf die neuen Lambda-Metriken zu.

„Die neue ModifyTargetGroup-API ermöglicht die Konfiguration eines Timeout-Werts für die Zustandsprüfung von 120 Sekunden, die ELB-Konsole erlaubt jedoch keinen Wert über 60 Sekunden.“

Um ein Timeout für die Zustandsprüfung von mehr als 60 Sekunden zu konfigurieren, rufen Sie die ModifyTargetGroup-API über die AWS-CLI auf. Sie können den Wert auf maximal 120 Sekunden konfigurieren.

Beispiel für den Befehl modify-target-group:

Hinweis: Ersetzen Sie im folgenden Befehl EXAMPLE_TARGET_GROUP_ARN durch Ihren Zielgruppen-ARN und EXAMPLE_REGION durch Ihren AWS-Regions-Code.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

Ähnliche Informationen

Lambda-Funktionen als Ziele

Versionsverwaltung und Aliase für Lambda-Funktionen

Verlagerung von Datenverkehr mithilfe von Aliasen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr