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: :headerin 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.
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
Aufgabe | Beschreibung | Erforderliche 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 | Cloud-Administrator |
Aufgabe | Beschreibung | Erforderliche 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:
| 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