Tutorial: Erstellen Sie eine grundlegende Lambda @Edge -Funktion - Amazon CloudFront

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 Sie eine grundlegende Lambda @Edge -Funktion

Dieses Tutorial zeigt Ihnen, wie Sie mit Lambda @Edge beginnen können, indem Sie eine Beispielfunktion für Node.js erstellen und konfigurieren, die in CloudFront ausgeführt wird. 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.)

Für dieses Tutorial benötigen Sie keine eigene Website. Wenn Sie sich jedoch dafür entscheiden, Ihre eigene Lambda @Edge -Lösung zu erstellen, folgen Sie ähnlichen Schritten und wählen aus denselben Optionen.

Schritt 1: Registrieren für AWS-Konto

Falls Sie dies noch nicht getan haben, melden Sie sich für eine an AWS-Konto. Weitere Informationen finden Sie unter Melden Sie sich für eine an AWS-Konto.

Schritt 2: Erstellen Sie eine CloudFront Distribution

Bevor Sie die Lambda @Edge -Beispielfunktion erstellen, müssen Sie über eine CloudFront Umgebung verfügen, 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 Distribution, die einen Amazon S3 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 Distribution mit einem Amazon S3 S3-Ursprung zu erstellen
  1. 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.

  2. Erstellen Sie eine CloudFront Distribution und fügen Sie Ihren S3-Bucket als Ursprung hinzu, indem Sie die Schritte CloudFront unter Web-Distribution 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 Distribution in einer Dropdownliste auswählen — zum Beispiel. E653W22221KDDL

Schritt 3: Erstellen Ihrer Funktion

In diesem Schritt erstellen Sie eine Lambda-Funktion aus einer Blueprint-Vorlage in der Lambda-Konsole. Die Funktion fügt Code hinzu, um die Sicherheitsheader in Ihrer Distribution zu aktualisieren. CloudFront

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

    Wichtig

    Vergewissern Sie sich, dass Sie sich in der Region 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.

  2. Wählen Sie Funktion erstellen aus.

  3. Wählen Sie auf der Seite Funktion erstellen die Option Blueprint verwenden aus, und filtern Sie dann nach den CloudFront Blueprints, indem Sie sie in das Suchfeld eingeben. cloudfront

    Anmerkung

    CloudFront Blueprints sind nur in der Region US-East-1 (Nord-Virginia) (us-east-1) verfügbar.

  4. Wählen Sie den Blueprint „HTTPAntwort-Header ändern“ als Vorlage für Ihre Funktion aus.

  5. Geben Sie folgende Informationen zu Ihrer Funktion ein:

    • Funktionsname — Geben Sie einen Namen für Ihre Funktion ein.

    • Ausführungsrolle — Wählen Sie aus, wie Sie die Berechtigungen für Ihre Funktion festlegen möchten. Um die empfohlene Standardvorlage für Lambda @Edge -Berechtigungsrichtlinien zu verwenden, wählen Sie Neue Rolle aus AWS Richtlinienvorlagen erstellen.

    • Rollenname — Geben Sie einen Namen für die Rolle ein, die durch die 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 CloudFront Sie Ihre Lambda-Funktion CloudFront an Standorten auf der ganzen Welt für Sie ausführen können. Weitere Informationen finden Sie unter IAMBerechtigungen und Rollen für Lambda @Edge einrichten.

  6. Wählen Sie unten auf der Seite die Option Funktion erstellen aus.

  7. Wählen Sie im daraufhin angezeigten Bereich Deploy to Lambda @Edge die Option Abbrechen aus. (Für dieses Tutorial müssen Sie den Funktionscode ändern, bevor Sie die Funktion in Lambda @Edge bereitstellen.)

  8. Scrollen Sie auf der Seite nach unten zum Abschnitt Codequelle.

  9. 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); };
  10. Wählen Sie Datei, Speichern, um den aktualisierten Code zu speichern.

  11. 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 so ausgeführt wird, dass die Header zu jeder Antwort hinzugefügt werden, die vom Ursprung Ihrer Distribution CloudFront empfangen wird.

Um den CloudFront Trigger für Ihre Funktion zu konfigurieren
  1. Wählen Sie in der Lambda-Konsole auf der Funktionsübersichtsseite für Ihre Funktion die Option Auslöser hinzufügen aus.

  2. Wählen Sie für Trigger-Konfiguration die Option CloudFront.

  3. Wählen Sie Deploy to Lambda @Edge.

  4. Geben Sie im Bereich Deploy to Lambda @Edge unter Configure CloudFront trigger die folgenden Informationen ein:

    • Distribution — Die CloudFront Distribution-ID, die Ihrer Funktion zugeordnet werden soll. Wählen Sie in der Dropdownliste die Vertriebs-ID aus.

    • Cache-Verhalten — Das Cache-Verhalten, das mit dem Trigger 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 zu Verteilungseinstellungen.

    • CloudFront event — Der Trigger, der angibt, wann Ihre Funktion ausgeführt wird. Wir möchten, dass die Security-Header-Funktion immer dann ausgeführt wird, wenn eine Antwort vom Ursprung CloudFront zurückgegeben wird. Wählen Sie in der Drop-down-Liste Origin-Antwort aus. Weitere Informationen finden Sie unter Trigger für eine Lambda @Edge -Funktion hinzufügen.

  5. Aktivieren Sie das Kontrollkästchen Bereitstellung auf Lambda @Edge bestätigen.

  6. Wählen Sie Deploy, um den Trigger hinzuzufügen und die Funktion AWS an Standorten weltweit zu replizieren.

  7. 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 zur CloudFront Konsole gehen und sich Ihre Distribution ansehen. Warten Sie, bis sich der Status der Verteilung von Bereitstellen auf Datum und Uhrzeit ändert. Das 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, überprüfen Sie, ob die Funktion das leistet, was Sie von ihr erwarten. In diesem Beispiel überprüfen wir 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
  1. Geben Sie in einem Browser die URL für eine Datei in Ihrem S3-Bucket ein. Sie könnten beispielsweise eine URL ähnliche Methode wie verwendenhttps://d111111abcdef8.cloudfront.net/image.jpg.

    Weitere Informationen zum CloudFront Domainnamen, der in der Datei verwendet werden sollURL, finden Sie unterPassen Sie das URL Format für Dateien an CloudFront.

  2. Öffnen Sie die Web-Developer-Symbolleiste Ihres Browsers. Öffnen Sie beispielsweise in Ihrem Browserfenster in Chrome das Kontextmenü (Rechtsklick) und wählen Sie Inspect (Untersuchen) aus.

  3. Wählen Sie die Registerkarte Network (Netzwerk) aus.

  4. Laden Sie die Seite neu, um Ihr Bild anzusehen, und wählen Sie dann im linken Bereich eine HTTP Anfrage aus. Die HTTP Überschriften werden in einem separaten Bereich angezeigt.

  5. Sehen Sie sich die Liste der HTTP Header an, um sicherzustellen, dass die erwarteten Sicherheitsheader in der Liste enthalten sind. Beispielsweise könnten Sie Header wie im folgenden Screenshot gezeigt sehen.

    HTTPHeader-Liste, in der die erwarteten Sicherheitsheader hervorgehoben sind.

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 es andere Probleme gibt, 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 von CloudWatch Protokollen untersuchen. Achten Sie darauf, die Protokolle zu verwenden, die an dem AWS Ort gespeichert sind, der dem Ort, an dem die Funktion ausgeführt wird, am nächsten liegt.

Wenn Sie sich die Datei beispielsweise von London aus ansehen, versuchen Sie, die Region in der CloudWatch Konsole auf Europa (London) zu ändern.

Um CloudWatch Logs für Ihre Lambda @Edge -Funktion zu untersuchen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Ändern Sie Region auf den Speicherort, der angezeigt wird, wenn Sie die Datei in Ihrem Browser anzeigen. Hier wird die Funktion ausgeführt.

  3. 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 einen Amazon S3 S3-Bucket und eine CloudFront Distribution nur für dieses Tutorial erstellt haben, löschen Sie die AWS Ressourcen, die Sie zugewiesen haben, sodass 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 werden AWS weiterhin Logs in Ihren Bucket geschrieben, während Sie ihn löschen.

Deaktivieren Sie die Protokollierung für einen Bucket wie folgt:
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie den Bucket aus, und wählen Sie dann Properties (Eigenschaften).

  3. Wählen Sie unter Properties (Eigenschaften) Logging (Protokollierung) aus.

  4. Deaktivieren Sie das Kontrollkästchen Enabled (Aktiviert).

  5. 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

Anweisungen zum Löschen der Lambda-Funktionsassoziation und optional der Funktion selbst finden Sie unterLambda @Edge -Funktionen und Replikate löschen.

Löschen Sie die Distribution CloudFront

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
  1. Öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Klicken Sie mit der rechten Maustaste auf die Verteilung, die Sie deaktivieren möchten, und anschließend auf Disable (Deaktivieren).

  3. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Yes, Disable (Ja, deaktivieren).

  4. Wählen Sie die deaktivierte Verteilung aus, und klicken Sie dann auf Delete (Löschen).

  5. 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: