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.
Tutorial: Erstellen einer grundlegenden Lambda@Edge-Funktion (Konsole)
Dieses Tutorial zeigt Ihnen, wie Sie mit Lambda @Edge beginnen, indem Sie eine Node.js Beispielfunktion erstellen und konfigurieren, die in ausgeführt wird. CloudFront In diesem Beispiel werden einer Antwort beim CloudFront Abrufen einer Datei HTTP-Sicherheitsheader hinzugefügt. (Dies kann die Sicherheit und den Datenschutz einer Website verbessern.)
Sie benötigen keine eigene Website für dieses Tutorial. Wenn Sie jedoch Ihre eigene Lambda@Edge-Lösung erstellen möchten, führen Sie ähnliche Schritte aus und wählen aus denselben Optionen aus.
Schritt 1: Melde dich an für AWS-Konto
Registrieren Sie sich für ein AWS-Konto, falls Sie das noch nicht getan haben. Weitere Informationen finden Sie unter Melde dich an für AWS-Konto.
Schritt 2: Erstellen Sie eine CloudFront Distribution
Bevor Sie die Lambda @Edge -Beispielfunktion erstellen, benötigen Sie eine CloudFront Umgebung, mit der Sie arbeiten können und die einen Ursprung für die Bereitstellung von Inhalten enthält.
In diesem Beispiel erstellen Sie eine CloudFront Verteilung, die einen Amazon S3-Bucket als Ursprung für die Verteilung verwendet. Wenn Sie bereits über eine Umgebung verfügen, die Sie benutzen können, können Sie diesen Schritt überspringen.
Um eine CloudFront Verteilung mit einem Amazon S3-Ursprung zu erstellen
-
Erstellen Sie einen Amazon S3-Bucket mit einer oder zwei Dateien, z. B. Image-Dateien, als Beispielinhalt. Für Hilfe folgen Sie den Schritten unter Hochladen Ihrer Inhalte zu Amazon S3. Stellen Sie sicher, dass Sie Berechtigungen erteilen, um öffentliche Lesezugriff auf die Objekte in Ihrem Bucket zu gewähren.
-
Erstellen Sie eine CloudFront Verteilung und fügen Sie Ihren S3-Bucket als Herkunft hinzu, indem Sie die Schritte CloudFront unter Webverteilung erstellen befolgen. Wenn Sie bereits eine Verteilung haben, können Sie stattdessen den Bucket als Ursprung für diese Verteilung hinzufügen.
Tipp
Notieren Sie sich die ID Ihrer Verteilung. Wenn Sie später in diesem Tutorial einen CloudFront Trigger für Ihre Funktion hinzufügen, müssen Sie die ID für Ihre Verteilung in einer Dropdownliste auswählen, z. B.
E653W22221KDDL
Schritt 3: Erstellen Ihrer Funktion
In diesem Schritt erstellen Sie eine Lambda-Funktion anhand einer Vorlage in der Lambda-Konsole. Die Funktion fügt Code hinzu, um Sicherheitsheader in Ihrer CloudFront-Verteilung zu aktualisieren.
So erstellen Sie eine Lambda-Funktion
-
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Lambda Konsole unter. https://console.aws.amazon.com/lambda/
Wichtig
Vergewissern Sie sich, dass Sie sich im US-East-1 (Nord-Virginia) AWS-Region (us-east-1) befinden. Sie müssen sich in dieser Region befinden, um Lambda@Edge-Funktionen erstellen zu können.
-
Wählen Sie Funktion erstellen.
-
Wählen Sie auf der Seite Funktion erstellen die Option Einen Blueprint verwenden aus, und filtern Sie dann nach den CloudFront Blueprints, indem Sie etwas
cloudfrontin das Suchfeld eingeben.Anmerkung
CloudFront Blueprints sind nur in der Region (Nord-Virginia) US-East-1 (us-east-1) verfügbar.
-
Wählen Sie die Vorlage HTTP-Antwortheader ändern als Vorlage für Ihre Funktion.
-
Geben Sie folgende Informationen zu Ihrer Funktion ein:
-
Funktionsname – Geben Sie einen Namen für Ihre Funktion ein.
-
Ausführungsrolle – Wählen Sie, wie Sie die Berechtigungen für Ihre Funktion festlegen. Um die empfohlene grundlegende Lambda @Edge -Richtlinienvorlage für Berechtigungen zu verwenden, wählen Sie Neue Rolle aus Richtlinienvorlagen erstellen aus. AWS
-
Rollenname – Geben Sie einen Namen für die Rolle ein, die von der Richtlinienvorlage erstellt wird.
-
Richtlinienvorlagen — Lambda fügt automatisch die Richtlinienvorlage Basic Lambda @Edge -Berechtigungen hinzu, da Sie einen CloudFront Blueprint als Grundlage für Ihre Funktion ausgewählt haben. Diese Richtlinienvorlage fügt Ausführungsrollenberechtigungen hinzu, mit denen Sie Ihre Lambda-Funktion CloudFront an CloudFront Standorten auf der ganzen Welt für Sie ausführen können. Weitere Informationen finden Sie unter Einrichten von IAM-Berechtigungen und -Rollen für Lambda@Edge.
-
-
Wählen Sie unten auf der Seite Funktion erstellen aus.
-
Wählen Sie im daraufhin angezeigten Bereich In Lambda@Edge bereitstellen die Option Abbrechen aus. (Für dieses Tutorial müssen Sie den Funktionscode ändern, bevor Sie die Funktion in Lambda@Edge bereitstellen.)
-
Scrollen Sie nach unten bis zum Abschnitt Code-Quelle.
-
Ersetzen Sie den Vorlagencode durch eine Funktion, die die Sicherheits-Header ändert, die Ihren Ursprung zurückgibt. Beispielsweise könnten Sie Code wie den folgenden verwenden:
'use strict'; export const handler = (event, context, callback) => { //Get contents of response const response = event.Records[0].cf.response; const headers = response.headers; //Set new headers headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age= 63072000; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; //Return modified response callback(null, response); }; -
Wählen Sie Datei und dann Speichern aus, um den aktualisierten Code zu speichern.
-
Wählen Sie Bereitstellen.
Fahren Sie mit dem nächsten Abschnitt fort, um einen CloudFront Trigger zum Ausführen der Funktion hinzuzufügen.
Schritt 4: Fügen Sie einen CloudFront Trigger hinzu, um die Funktion auszuführen
Da Sie nun über eine Lambda-Funktion zum Aktualisieren von Sicherheitsheadern verfügen, konfigurieren Sie den CloudFront Trigger so, dass Ihre Funktion ausgeführt wird, um die Header in jede Antwort einzufügen, die vom Ursprung für Ihre Distribution CloudFront empfangen wird.
Um den CloudFront Trigger für Ihre Funktion zu konfigurieren
-
Wählen Sie in der Lambda-Konsole auf der Seite Funktionsübersicht Ihrer Funktion die Option Auslöser hinzufügen aus.
-
Wählen Sie für die Trigger-Konfiguration CloudFront.
-
Wählen Sie In Lambda@Edge bereitstellen aus.
-
Geben Sie im Bereich Auf Lambda @Edge bereitstellen unter CloudFront Trigger konfigurieren die folgenden Informationen ein:
-
Verteilung — Die CloudFront Verteilungs-ID, die Ihrer Funktion zugeordnet werden soll. Wählen Sie in der Dropdown-Liste die Distributions-ID aus.
-
Cacheverhalten – Das Cacheverhalten, das für den Auslöser verwendet werden soll. Behalten Sie in diesem Beispiel den Wert * bei, der das Standard-Cache-Verhalten Ihrer Verteilung bezeichnet. Weitere Informationen finden Sie unter Einstellungen für das Cache-Verhalten im Thema Referenz für alle Distributionseinstellungen.
-
CloudFront Ereignis — Der Trigger, der angibt, wann Ihre Funktion ausgeführt wird. Die Security-Header-Funktion sollte immer dann ausgeführt werden, wenn eine Antwort vom Ursprung CloudFront zurückgegeben wird. Wählen Sie in der Dropdown-Liste Ursprungsantwort aus. Weitere Informationen finden Sie unter Hinzufügen von Auslösern für eine Lambda@Edge-Funktion.
-
-
Aktivieren Sie das Kontrollkästchen Bereitstellung in Lambda@Edge bestätigen.
-
Wählen Sie Deploy, um den Trigger hinzuzufügen und die Funktion AWS an Standorte weltweit zu replizieren.
-
Warten Sie, bis die Funktion repliziert wurde. Dies dauert in der Regel mehrere Minuten.
Sie können überprüfen, ob die Replikation abgeschlossen ist, indem Sie die CloudFront-Konsole öffnen
und sich Ihre Verteilung ansehen. Warten Sie darauf, dass sich der Status der Distribution von Wird bereitgestellt in ein Datum und eine Uhrzeit ändert, was bedeutet, dass Ihre Funktion repliziert wurde. Zur Überprüfung der Funktionstätigkeit befolgen Sie die Schritte im nächsten Abschnitt.
Schritt 5: Überprüfen, ob die Funktion funktioniert
Nachdem Sie Ihre Lambda-Funktion erstellt und einen Trigger konfiguriert haben, um sie für eine CloudFront Distribution auszuführen, stellen Sie sicher, dass die Funktion das erfüllt, was Sie von ihr erwarten. In diesem Beispiel überprüfen Sie die HTTP-Header, die CloudFront zurückgegeben werden, um sicherzustellen, dass die Sicherheitsheader hinzugefügt wurden.
Überprüfen, ob Ihre Lambda@Edge-Funktion Sicherheitsheader hinzufügt
-
Geben Sie in einem Browser die URL für eine Datei in Ihrem S3-Bucket ein. Sie können beispielsweise eine URL wie die folgende Verwenden:
https://d111111abcdef8.cloudfront.net/image.jpg.Weitere Hinweise zum CloudFront Domänennamen, der in der Datei-URL verwendet werden soll, finden Sie unter. Passen Sie das URL-Format für Dateien in an CloudFront
-
Öffnen Sie die Web-Developer-Symbolleiste Ihres Browsers. Öffnen Sie beispielsweise in Ihrem Browserfenster in Chrome das Kontextmenü und wählen Sie dann Inspect.
-
Wählen Sie die Registerkarte Network (Netzwerk) aus.
-
Laden Sie die Seite, um Ihr Image anzuzeigen, und wählen Sie dann auf der linken Seite eine HTTP-Anforderung. Sie sehen die HTTP-Header in einem separaten Fenster.
-
Sehen Sie sich die Liste der HTTP-Header an, um zu überprüfen, ob die erwarteten Sicherheitsheader in der Liste enthalten sind. Beispielsweise könnten Sie Header wie im folgenden Screenshot gezeigt sehen.
Wenn die Sicherheitsheader in Ihrem Header-Liste enthalten sind, dann ist das hervorragend! Sie haben erfolgreich Ihre erste Lambda@Edge-Funktion erstellt. Wenn Fehler CloudFront zurückgegeben werden oder andere Probleme auftreten, fahren Sie mit dem nächsten Schritt fort, um die Probleme zu beheben.
Schritt 6: Beheben von Problemen
Wenn Fehler CloudFront zurückgegeben werden oder die Sicherheitsheader nicht wie erwartet hinzugefügt werden, können Sie die Ausführung Ihrer Funktion anhand der CloudWatch Protokolle untersuchen. Verwenden Sie unbedingt die Protokolle, die an dem Ort gespeichert sind, der dem AWS Ort, an dem die Funktion ausgeführt wird, am nächsten liegt.
Wenn Sie die Datei beispielsweise von London aus betrachten, versuchen Sie, die Region in der CloudWatch Konsole in Europa (London) zu ändern.
So überprüfen Sie die CloudWatch Protokolle für Ihre Lambda @Edge -Funktion
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Ändern Sie Region auf den Speicherort, der angezeigt wird, wenn Sie die Datei in Ihrem Browser anzeigen. Hier wird die Funktion ausgeführt.
-
Klicken Sie im linken Bereich auf Logs (Protokolle), um die Protokolle für Ihre Verteilung anzuzeigen.
Weitere Informationen finden Sie unter Überwachen Sie CloudFront Metriken mit Amazon CloudWatch.
Schritt 7: Bereinigen der Ressourcen für Ihr Beispiel
Wenn Sie nur für dieses Tutorial einen Amazon S3-Bucket und eine Amazon CloudFront S3-Distribution erstellt haben, löschen Sie die AWS Ressourcen, die Sie zugewiesen haben, sodass für Sie keine Gebühren mehr anfallen. Nachdem Sie Ihre AWS Ressourcen gelöscht haben, sind alle Inhalte, die Sie hinzugefügt haben, nicht mehr verfügbar.
Aufgaben
Löschen des S3-Buckets
Bevor Sie Ihren Amazon S3-Bucket löschen, stellen Sie sicher, dass die Protokollierung für den Bucket deaktiviert ist. Andernfalls schreibt es AWS weiterhin Protokolle in Ihren Bucket, während Sie ihn löschen.
Deaktivieren Sie die Protokollierung für einen Bucket wie folgt:
Öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie den Bucket aus, und wählen Sie dann Properties (Eigenschaften).
-
Wählen Sie unter Properties (Eigenschaften) Logging (Protokollierung) aus.
-
Deaktivieren Sie das Kontrollkästchen Enabled (Aktiviert).
-
Wählen Sie Save (Speichern) aus.
Jetzt können Sie Ihren Bucket löschen. Weitere Informationen erhalten Sie unter Löschen eines Buckets im Amazon Simple Storage Service-Konsolenbenutzerhandbuch.
Löschen Sie die Lambda-Funktion
Anleitungen zum Löschen der Zuweisung der Lambda-Funktion und optional der Funktion selbst finden Sie unter Löschen von Lambda@Edge-Funktionen und Replikaten.
Löschen Sie die CloudFront Verteilung
Bevor Sie eine CloudFront Distribution löschen, müssen Sie sie deaktivieren. Eine deaktivierte Verteilung funktioniert nicht mehr und es fallen keine weiteren Kosten für sie an. Sie können eine deaktivierte Verteilung jederzeit wieder aktivieren. Nachdem Sie eine deaktivierte Verteilung gelöscht haben, ist sie nicht länger verfügbar.
Um eine CloudFront Distribution zu deaktivieren und zu löschen
Öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home
. -
Klicken Sie mit der rechten Maustaste auf die Verteilung, die Sie deaktivieren möchten, und anschließend auf Disable (Deaktivieren).
-
Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Yes, Disable (Ja, deaktivieren).
-
Wählen Sie die deaktivierte Verteilung aus, und klicken Sie dann auf Delete (Löschen).
-
Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Yes, Delete.
Ähnliche Informationen
Nun, da Sie eine grundlegende Vorstellung davon haben, wie Lambda@Edge-Funktionen funktionieren, können Sie hier weitere Informationen erhalten: