Ändern Sie HTTP Header, wenn Sie von F5 zu einem Application Load Balancer migrieren AWS - AWS Prescriptive Guidance

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.

Ändern Sie HTTP Header, wenn Sie von F5 zu einem Application Load Balancer migrieren AWS

Erstellt von Sachin Trivedi () AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Vor Ort

Ziel: Cloud AWS

R-Typ: Replatform

Arbeitslast: Alle anderen Workloads

Technologien: Netzwerke; Hybrid Cloud; Migration

AWSDienste: Amazon CloudFront; Elastic Load Balancing (ELB); AWS Lambda

Übersicht

Wenn Sie eine Anwendung, die einen F5-Load Balancer verwendet, zu Amazon Web Services (AWS) migrieren und einen Application Load Balancer verwenden möchtenAWS, ist die Migration von F5-Regeln für Header-Änderungen ein häufiges Problem. Ein Application Load Balancer unterstützt keine Header-Änderungen, aber Sie können Amazon CloudFront als Content Delivery Network (CDN) und Lambda @Edge verwenden, um Header zu ändern.

Dieses Muster beschreibt die erforderlichen Integrationen und bietet Beispielcode für die Header-Änderung mithilfe von AWS CloudFront und Lambda @Edge.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Eine lokale Anwendung, die einen F5-Load Balancer mit einer Konfiguration verwendet, die den HTTP Header-Wert ersetzt durch if, else Weitere Informationen zu dieser Konfiguration finden Sie unter HTTP: :header in der F5-Produktdokumentation. 

Einschränkungen

  • Dieses Muster gilt für die Anpassung des F5-Load Balancer-Headers. Informationen zur Unterstützung anderer Load Balancer von Drittanbietern finden Sie in der Load Balancer-Dokumentation.

  • Die Lambda-Funktionen, die Sie für Lambda @Edge verwenden, müssen sich in der Region USA Ost (Nord-Virginia) befinden.

Architektur

Das folgende Diagramm zeigt die ArchitekturAWS, einschließlich des Integrationsflusses zwischen den Komponenten CDN und anderen AWS Komponenten.

Architektur für Header-Modifikation mithilfe von Amazon CloudFront und Lambda @Edge

Tools

AWSDienstleistungen

  • Application Load Balancer ─ Ein Application Load Balancer ist ein AWS vollständig verwalteter Lastenausgleichsdienst, der auf der siebten Ebene des Open Systems Interconnection () OSI -Modells funktioniert. Er verteilt den Datenverkehr auf mehrere Ziele und unterstützt erweiterte Routing-Anfragen, die auf HTTP Headern und Methoden, Abfragezeichenfolgen und host- oder pfadbasiertem Routing basieren.

  • Amazon CloudFront — Amazon CloudFront ist ein Webservice, der die Verteilung Ihrer statischen und dynamischen Webinhalte wie .html-, .css-, .js- und Bilddateien an Ihre Benutzer beschleunigt. CloudFront stellt Ihre Inhalte über ein weltweites Netzwerk von Rechenzentren bereit, die als Edge-Standorte bezeichnet werden, um die Latenz zu verringern und die Leistung zu verbessern.

  • Lambda @Edge ─ Lambda @Edge ist eine Erweiterung von AWS Lambda, mit der Sie Funktionen ausführen können, um den bereitgestellten Inhalt anzupassen. CloudFront Sie können Funktionen in der Region USA Ost (Nord-Virginia) erstellen und die Funktion dann einer CloudFront Distribution zuordnen, um Ihren Code automatisch auf der ganzen Welt zu replizieren, ohne Server bereitstellen oder verwalten zu müssen. Dies reduziert die Latenz und verbessert die Benutzererfahrung.

Code

Der folgende Beispielcode bietet einen Blueprint zum Ändern von CloudFront Antwort-Headern. Folgen Sie den Anweisungen im Abschnitt Epics, um den Code bereitzustellen.

exports.handler = async (event, context) => {     const response = event.Records[0].cf.response;     const headers = response.headers;     const headerNameSrc = 'content-security-policy';     const headerNameValue = '*.xyz.com';     if (headers[headerNameSrc.toLowerCase()]) {         headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,         }];         console.log(`Response header "${headerNameSrc}" was set to ` +                     `"${headers[headerNameSrc.toLowerCase()][0].value}"`);     }     else {             headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,             }];     }     return response; };

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie eine CloudFront Webdistribution.

In diesem Schritt erstellen Sie eine CloudFront Verteilung, in der Sie angeben, von CloudFront wo aus Inhalte bereitgestellt werden sollen. Außerdem erfahren Sie, wie Sie die Inhaltsbereitstellung nachverfolgen und verwalten können.

Um eine Verteilung mithilfe der Konsole zu erstellen, melden Sie sich bei der AWS Management Console an, öffnen Sie die CloudFront Konsole, und folgen Sie dann den Schritten in der CloudFront Dokumentation.

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie eine Lambda @Edge -Funktion und stellen Sie sie bereit.

Sie können eine Lambda @Edge -Funktion erstellen, indem Sie einen Blueprint zum Ändern von CloudFront Antwortheadern verwenden. (Andere bluePrints sind für verschiedene Anwendungsfälle verfügbar; weitere Informationen finden Sie in der CloudFront Dokumentation unter Lambda @Edge -Beispielfunktionen.) 

Um eine Lambda @Edge -Funktion zu erstellen:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.

  2. Stellen Sie sicher, dass Sie sich in der Region USA Ost (Nord-Virginia) befinden. CloudFront Blueprints sind nur in dieser Region verfügbar.

  3. Wählen Sie Funktion erstellen aus.

  4. Wählen Sie Blueprint verwenden aus und geben Sie dann Cloudfront in das Blueprints-Suchfeld ein. 

  5. Wählen Sie den cloudfront-modify-response-headerBlueprint aus und wählen Sie dann Konfigurieren aus.

  6. Geben Sie auf der Seite mit den Basisinformationen die folgenden Informationen ein:

    1. Geben Sie einen Funktionsnamen ein.

    2. Wählen Sie für Ausführungsrolle die Option Neue Rolle aus AWS Richtlinienvorlagen erstellen aus.

    3. Ordnen Sie den erforderlichen Rollennamen für AWS Identity and Access Management (IAM) zu.

  7. Wählen Sie Funktion erstellen aus.

  8. Wählen Sie im Bereich Designer der Seite den Namen Ihrer Funktion aus.

  9. Ersetzen Sie im Abschnitt Funktionscode den Vorlagencode durch den Beispielcode, der zuvor in diesem Muster im Abschnitt Code bereitgestellt wurde.

  10. Ersetzen Sie ihn im Beispielcode xyz.com durch Ihren Domainnamen.  

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

AWSAdministrator
Stellen Sie die Lambda @Edge -Funktion bereit.

Folgen Sie den Anweisungen in Schritt 4 des Tutorials: Erstellen einer einfachen Lambda @Edge -Funktion in der CloudFront Amazon-Dokumentation, um den CloudFront Trigger zu konfigurieren und die Funktion bereitzustellen.

AWSAdministrator

Zugehörige Ressourcen

CloudFront Dokumentation