Wie verwende ich CloudFront, um eine statische Website bereitzustellen, die auf Amazon S3 gehostet wird?

Lesedauer: 9 Minute
0

Ich möchte eine statische Website in einem Amazon Simple Storage Service (Amazon S3)-Bucket hosten. Dann möchte ich meine Website über eine Amazon CloudFront-Verteilung bereitstellen.

Kurzbeschreibung

Um eine statische Website bereitzustellen, die auf Amazon S3 gehostet wird, verwenden Sie eine der folgenden Konfigurationen, um eine CloudFront-Verteilung bereitzustellen:

  • Verwenden Sie einen REST-API-Endpunkt als Ursprung und beschränken Sie den Zugriff mit einer Ursprungszugriffskontrolle (OAC) oder einer Ursprungszugriffsidentität (OAI)
    Hinweis: Es hat sich bewährt, Ursprungszugriffskontrolle (OAC) zu verwenden, um den Zugriff einzuschränken. Ursprungszugriffskontrolle (OAI) ist eine veraltete Methode für diesen Prozess.
  • Einen Website-Endpunkt als Ursprung verwenden und anonymen (öffentlichen) Zugriff ermöglichen
  • Einen Website-Endpunkt als Ursprung verwenden und den Zugriff mit einem Referer-Header beschränken
  • AWS CloudFormation verwenden, um eine statische Website, einen Endpunkt als Ursprung und eine benutzerdefinierte Domain bereitzustellen, die auf CloudFront verweist

Weitere Informationen zu den beiden Endpunkttypen finden Sie unter Hauptunterschiede zwischen einem Website-Endpunkt und einem REST-API-Endpunkt.

Behebung

Gehen Sie wie folgt vor, um eine CloudFront-Verteilung mit dem S3-Endpunkttyp zu konfigurieren, den Sie als Ursprung verwenden möchten:

Einen REST-API-Endpunkt als Ursprung verwenden und den Zugriff mit einem OAC oder einer OAI (Legacy) beschränken

  1. Verwenden Sie die Amazon S3-Konsole, um einen Bucket zu erstellen und Ihre Website-Dateien hochzuladen.

Hinweis: Für diese Konfiguration müssen Sie das statische Website-Hosting in Ihrem Bucket nicht aktivieren. Diese Konfiguration verwendet den REST-API-Endpunkt des Buckets anstelle des Website-Endpunkts aus der statischen Website-Hosting-Funktion.

2.Erstellen Sie eine CloudFront-Webverteilung. Führen Sie zusätzlich zu Ihren Verteilungseinstellungen für Anwendungsfälle die Schritte in einem der folgenden Abschnitte aus, um den Zugriff auf den Amazon S3-Ursprung einzuschränken. Es hat sich bewährt, OAC zu verwenden, da es sich bei OAI um eine veraltete Umgebung handelt.

OAC

Wenn Sie Ihre Verteilung erstellen, geben Sie Ihren Amazon S3-Bucket-Namen in das Feld Ursprungs-Domain ein.

Wählen Sie für Ursprungszugriff die Ursprungszugriffskontrolleinstellungen (empfohlen) aus.

Wähle in der ** Drop-down-Liste ** Origin-Zugriffskontrolle den OAC-Namen aus und wähle Kontrolleinstellung ** erstellen**.

Geben Sie Ihrer Steuereinstellung im Dialogfeld den Namen\ **.** Es hat sich bewährt, die Standardeinstellung Anfragen signieren (empfohlen) beizubehalten. Wählen Sie dann Erstellen aus.

CloudFront stellt Ihnen die Richtlinienerklärung zur Verfügung, mit der Sie OAC die Erlaubnis zum Zugriff auf Ihren Amazon S3-Bucket erteilen, nachdem Sie die Verteilung erstellt haben. Wählen Sie Richtlinie kopieren und fügen Sie die Richtlinie in Ihre S3-Bucket-Richtlinienkonfiguration ein.

OAI

Wenn Sie Ihre Verteilung erstellen, geben Sie Ihren Amazon S3-Bucket-Namen in das Feld Ursprungs-Domain ein.

Wählen Sie für Ursprungszugriff Legacy-Zugriffsidentitäten aus.

Wählen Sie in der Dropdownliste Ursprungszugriffsidentität den Namen der Usprungszugriffsidentität aus. Wählen Sie dann Neue OAI erstellen aus.

Benennen Sie im Dialogfeld Ihre neue Ursprungszugriffsidentität und wählen Sie Erstellen aus.

Wählen Sie für Bucket-Richtlinie Ja, Bucket-Richtlinie aktualisieren aus.

  1. Wenn Sie Ihre Verteilung erstellen, empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domain mit HTTPS zu verwenden, wählen Sie **Benutzerdefiniertes SSL-Zertifikat aus.**Wählen Sie Zertifikat anfordern aus, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie trotzdem HTTPS mit dem cloudfront.net-Domain-Namen für Ihre Verteilung verwenden.
    Wichtig: Wenn Sie Alternative Domain-Namen (CNAMes) für Ihre Verteilung eingeben, müssen die CNAMes mit dem von Ihnen ausgewählten SSL-Zertifikat übereinstimmen. Informationen zur Behebung von Problemen mit Ihrem SSL-Zertifikat finden Sie unter Wie kann ich Probleme bei der Verwendung eines benutzerdefinierten SSL-Zertifikats für meine CloudFront-Verteilung beheben?

  2. Aktualisieren Sie die DNS-Einträge für Ihre Domain, sodass die Domain Ihrer Website auf CloudFront verweist. Sie finden den Domain-Namen Ihrer Verteilung in der CloudFront-Konsole. Der Domain-Name sieht dem folgenden Beispiel ähnlich: d1234abcd.cloudfront.net.

  3. Warten Sie, bis Ihre DNS-Änderungen übernommen werden und die vorherigen DNS-Einträge ablaufen.
    Hinweis: Wie lange die vorherigen DNS-Werte ablaufen hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt ist. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.

Einen Website-Endpunkt als Ursprung verwenden und anonymen (öffentlichen) Zugriff ermöglichen

Diese Konfiguration ermöglicht öffentlichen Lesezugriff auf den Bucket Ihrer Website. Weitere Informationen finden Sie unter Berechtigungen für den Zugriff auf Websites festlegen.
Hinweis: Wenn Sie den statischen Amazon S3-Website-Endpunkt verwenden, sind Verbindungen zwischen CloudFront und Amazon S3 nur über HTTP verfügbar. Um HTTPS für Verbindungen zwischen CloudFront und Amazon S3 zu verwenden, konfigurieren Sie einen S3-REST-API-Endpunkt für Ihren Ursprung.

  1. Verwenden Sie die Amazon S3-Konsole, um einen Bucket zu erstellen und das statische Website-Hosting für den Bucket zu aktivieren.
  2. Kopieren Sie im Dialogfeld Statisches Website-Hosting den Endpunkt Ihres Buckets ohne http:// am Anfang. Das Format ähnelt DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Sie benötigen den Endpunkt in diesem Format für einen späteren Schritt.
  3. Fügen Sie eine Bucket-Richtlinie hinzu, die öffentlichen Lesezugriff auf den von Ihnen erstellten Bucket ermöglicht.
    Hinweis: Für diese Konfiguration müssen Sie die Öffentlichen Zugriff blockieren Einstellungen des S3-Buckets deaktivieren. Wenn Ihr Anwendungsfall erfordert, dass Sie die Einstellungen zum Blockieren des öffentlichen Zugriffs aktivieren, verwenden Sie den REST-API-Endpunkt als Ursprung. Beschränken Sie dann den Zugriff durch eine Ursprungszugriffskontrolle (OAC) oder Ursprungszugriffsidentität (OAI).
  4. Erstellen Sie eine CloudFront-Webverteilung. Führen Sie zusätzlich zu Ihren Einstellungen für die Anwendungsfallverteilung die folgenden Schritte aus:
    Geben Sie für Ursprungs-Domain den Endpunkt ein, den Sie im vorherigen Schritt kopiert haben.
    Hinweis: Wählen Sie den Bucket nicht aus der Dropdown-Liste aus. Die Dropdown-Liste enthält nur die S3 Bucket REST API-Endpunkte, die Sie in dieser Konfiguration nicht verwenden.
  5. Wenn Sie Ihre Verteilung erstellen, empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domain mit HTTPS zu verwenden, wählen Sie **Benutzerdefiniertes SSL-Zertifikat aus.**Wählen Sie Zertifikat anfordern aus, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie trotzdem HTTPS mit dem cloudfront.net-Domainnamen für Ihre Verteilung verwenden.
    Wichtig: Wenn Sie Alternative Domain-Namen (CNAMes) für Ihre Verteilung eingeben, müssen die CNAMes mit dem von Ihnen ausgewählten SSL-Zertifikat übereinstimmen. Informationen zur Behebung von Problemen mit Ihrem SSL-Zertifikat finden Sie unter Wie kann ich Probleme bei der Verwendung eines benutzerdefinierten SSL-Zertifikats für meine CloudFront-Verteilung beheben?
  6. Aktualisieren Sie die DNS-Einträge für Ihre Domain, sodass die Domain Ihrer Website auf CloudFront verweist. Sie finden den Domain-Namen Ihrer Verteilung in der CloudFront-Konsole. Das Domain-Namenformat ähnelt dem folgenden Beispiel: d1234abcd.cloudfront.net.
  7. Warten Sie, bis Ihre DNS-Änderungen übernommen werden und die vorherigen DNS-Einträge ablaufen.
    Hinweis: Wie lange die vorherigen DNS-Werte ablaufen hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt ist. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.

Einen Website-Endpunkt als Ursprung verwenden und den Zugriff mit einem Referer-Header beschränken

Wichtig: Prüfen Sie, ob der Zugriff, den dieses Setup ermöglicht, den Anforderungen Ihres Anwendungsfalls entspricht.

Diese Konfiguration richtet einen benutzerdefinierten Referer-Header für die Verteilung ein, um den Zugriff einzuschränken. Anschließend verwendet es eine Bucket-Richtlinie, um den Zugriff nur für Anfragen mit dem benutzerdefinierten Referer-Header zuzulassen.

Hinweis: Wenn Sie den statischen Amazon S3-Website-Endpunkt verwenden, sind Verbindungen zwischen CloudFront und Amazon S3 nur über HTTP verfügbar. Um HTTPS für Verbindungen zwischen CloudFront und Amazon S3 zu verwenden, konfigurieren Sie einen S3-REST-API-Endpunkt für Ihren Ursprung.

  1. Verwenden Sie die Amazon S3-Konsole, um einen Bucket zu erstellen und das statische Website-Hosting für den Bucket zu aktivieren.
  2. Kopieren Sie im Dialogfeld Statisches Website-Hosting den Endpunkt Ihres Buckets ohne http:// am Anfang. Das Format ähnelt DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Sie benötigen den Endpunkt in diesem Format für einen späteren Schritt.
  3. Erstellen Sie eine CloudFront-Webverteilung. Führen Sie zusätzlich zu Ihren Einstellungen für die Anwendungsfallverteilung die folgenden Schritte aus:
    Geben Sie für Ursprungs-Domain den Endpunkt ein, den Sie im vorherigen Schritt kopiert haben.
    Hinweis: Wählen Sie den Bucket nicht aus der Dropdown-Liste aus. Die Dropdown-Liste enthält nur die S3 Bucket REST API-Endpunkte, die diese Konfiguration nicht verwendet.
    Wählen Sie unter Benutzerdefinierte Kopfzeile verwenden die Option Kopfzeile hinzufügen aus.
    Geben Sie als Kopfzeilenname Referer ein.
    Geben Sie unter Wert einen Kundenkopfzeilenwert ein, den Sie an den Ursprung (S3-Bucket) weiterleiten möchten. Um den Zugriff auf den Ursprung einzuschränken, geben Sie einen zufälligen oder geheimen Wert ein, den nur Sie kennen.
  4. Wenn Sie Ihre Verteilung erstellen, empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domain mit HTTPS zu verwenden, wählen Sie **Benutzerdefiniertes SSL-Zertifikat aus.**Wählen Sie Zertifikat anfordern aus, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie trotzdem HTTPS mit dem cloudfront.net-Domain-Namen für Ihre Verteilung verwenden.
    Wichtig: Wenn Sie Alternative Domain-Namen (CNAMes) für Ihre Verteilung eingeben, müssen die CNAMes mit dem von Ihnen ausgewählten SSL-Zertifikat übereinstimmen. Informationen zur Behebung von Problemen mit Ihrem SSL-Zertifikat finden Sie unter Wie kann ich Probleme bei der Verwendung eines benutzerdefinierten SSL-Zertifikats für meine CloudFront-Verteilung beheben?
  5. Öffnen Sie den Bucket Ihrer Website von der Amazon S3-Konsole aus. Fügen Sie dann eine Bucket-Richtlinie hinzu, die s3:getObject unter der Bedingung zulässt, dass die Anfrage den benutzerdefinierten Referer-Header enthält, den Sie in Schritt 3 angegeben haben. Für diese Konfiguration müssen Sie die Öffentlichen Zugriff blockieren Einstellungen des S3-Buckets deaktivieren. Amazon S3 betrachtet eine Bucket-Richtlinie, die anonymen Zugriff gewährt, der durch einen Referer eingeschränkt wird, als öffentlich. Wenn Ihr Anwendungsfall erfordert, dass Sie die Einstellungen zum Blockieren des öffentlichen Zugriffs aktivieren, verwenden Sie den REST-API-Endpunkt als Ursprung. Beschränken Sie dann den Zugriff mit einer Ursprungszugriffskontrolle (OAC) oder Ursprungszugriffsidentität (OAI).
    Hinweis: Um den Zugriff für Anfragen zu blockieren, die den benutzerdefinierten Referer-Header nicht enthalten, verwenden Sie eine explizite Ablehnen-Anweisung in der Bucket-Richtlinie.
  6. Aktualisieren Sie die DNS-Einträge für Ihre Domain, sodass die Domain Ihrer Website auf CloudFront verweist. Sie finden den Domain-Namen Ihrer Verteilung in der CloudFront-Konsole. Der Domain-Name ähnelt dem folgenden Beispiel: d1234abcd.cloudfront.net.
  7. Warten Sie, bis Ihre DNS-Änderungen übernommen werden und die vorherigen DNS-Einträge ablaufen.
    Hinweis: Wie lange die vorherigen DNS-Werte ablaufen hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt ist. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.

CloudFormation verwenden, um eine statische Website, einen Endpunkt als Ursprung und eine benutzerdefinierte Domain bereitzustellen, die auf CloudFront verweist

Diese Lösung verwendet die folgende Konfiguration für Ihre Website:

  • Stellt Ihre Website mit CloudFormation bereit
  • Hostet Ihre Website auf Amazon S3
  • Verteilt Ihre Website mit CloudFront
  • Verwendet ein SSL/TLS-Zertifikat von AWS Certificate Manager (ACM)
  • Verwendet CloudFront Response Header-Richtlinien, um jeder Serverantwort Sicherheitskopfzeilen hinzuzufügen

Anweisungen zur Bereitstellung dieser Lösung finden Sie auf der Amazon CloudFront Secure Static Website auf der GitHub-Website.

Ähnliche Informationen

Erste Schritte mit einer sicheren statischen Website

E-Mail-Validierung

DNS-Validierung

Alternative Domain-Namen und HTTPS verwenden