Wie kann ich mit CloudFront eine auf Amazon S3 gehostete statische Website bereitstellen?
Ich möchte eine statische Website in einem Amazon-Simple-Storage-Service-Bucket (Amazon S3) hosten. Anschließend möchte ich meine Website über eine Amazon CloudFront-Verteilung bereitstellen. Wie gehe ich vor?
Kurzbeschreibung
Um eine statische Website bereitzustellen, die auf Amazon S3 gehostet wird, können Sie eine CloudFront-Verteilung mithilfe einer dieser Konfigurationen bereitstellen:
- Verwenden eines REST-API-Endpunkts als Ursprung mit Zugriffsbeschränkung durch eine Origin-Access-Control (OAC) Ursprungszugriffsidentität (OAI)
Hinweis: Es ist eine bewährte Methode, Origin-Access-Control (OAC) zu verwenden, um den Zugriff einzuschränken. Ursprungszugriffsidentität (OAI) ist eine Legacy-Methode für diesen Prozess. - Verwenden eines Website-Endpunkts als Ursprung mit anonymem (öffentlichem) Zugriff
- Verwenden eines Website-Endpunkts als Ursprung, wobei der Zugriff durch einen Referenz-Header eingeschränkt ist
- Verwenden von CloudFormation zur Bereitstellung einer statischen Website, eines Endpunkts als Ursprung und einer benutzerdefinierten Domain, die auf CloudFront verweist
Weitere Informationen zu den beiden Endpunkttypen finden Sie unter Hauptunterschiede zwischen einem Website-Endpunkt und einem REST-API-Endpunkt.
Lösung
Folgen Sie den Schritten zum Konfigurieren einer CloudFront-Verteilung mit dem S3-Endpunkttyp, den Sie als Ursprung verwenden möchten:
Verwenden eines REST-API-Endpunkts als Ursprung mit Zugriffsbeschränkung durch eine OAC oder eine OAI (Legacy)
- Verwenden Sie die Amazon-S3-Konsole, um einen Bucket zu erstellen und Ihre Website-Dateien hochzuladen.
Hinweis: Für diese Konfiguration müssen Sie kein statisches Website-Hosting in Ihrem Bucket aktivieren. Diese Konfiguration verwendet den REST-API-Endpunkt des Buckets anstelle des Website-Endpunkts aus der statischen Website-Hosting-Funktion. - Erstellen einer CloudFront-Web-Verteilung. Beschränken Sie zusätzlich zu den Verteilungseinstellungen, die Sie für Ihren Anwendungsfall benötigen, den Zugriff auf den Amazon-S3-Ursprung mit einer der folgenden Methoden. Es ist eine bewährte Methode, OAC zu verwenden. Die Verwendung von OAI ist eine ältere Einstellung.
Verwenden Sie beim Erstellen Ihrer Verteilung die folgenden Einstellungen, um den Zugriff mithilfe von OAC einzuschränken:
Geben Sie Ihren Amazon-S3-Bucket-Namen im Feld Ursprungsdomäne ein.
Wählen Sie unter Ursprungszugriff die Einstellungen für die Origin-Access-Control (empfohlen) aus.
Wählen Sie in der Dropdownliste Origin-Access-Control den OAC-Namen aus und wählen Sie Kontrolleinstellung erstellen aus.
Benennen Sie im Dialogfeld Ihre Steuerelementeinstellung**.** Es empfiehlt sich, die Standardeinstellung Anfragen signieren zu belassen (empfohlen). Wählen Sie dann Erstellen.
CloudFront stellt Ihnen die Richtlinienerklärung bereit, um OAC nach dem Erstellen der Verteilung die Berechtigung zum Zugriff auf Ihren Amazon-S3-Bucket zu erteilen. Wählen Sie Richtlinie kopieren und fügen Sie die Richtlinie in Ihre S3-Bucket-Richtlinienkonfiguration ein.
-oder-
Verwenden Sie beim Erstellen Ihrer Verteilung die folgenden Einstellungen, um den Zugriff mithilfe einer OAI einzuschränken:
Geben Sie Ihren Amazon-S3-Bucket-Namen im Feld Ursprungsdomäne ein.
Wählen Sie unter UrsprungszugriffLegacy-Zugriffsidentitäten aus.**Wählen Sie in der Dropdownliste Origin-Zugriffsidentität den Namen der Origin-Zugriffsidentität. Wählen Sie dann **Neue OAI erstellen.**Benennen Sie im Dialogfeld Ihre neue Origin-Zugriffsidentität und wählen Sie Erstellen.
Wählen Sie für **Bucket-RichtlinieJa, die Bucket-Richtlinie aktualisieren.
3. Bei der Erstellung Ihrer Distribution empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domäne mit HTTPS zu verwenden, wählen Sie Benutzerdefiniertes SSL-Zertifikat aus. Sie können Zertifikat anfordern auswählen, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie weiterhin HTTPS mit dem Domainnamen „cloudfront.net“ für Ihre Verteilung verwenden.
Wichtig: Wenn Sie alternative Domainnamen (CNames) für Ihre Verteilung eingegeben haben, 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?
4. Aktualisieren Sie die DNS-Einträge für Ihre Domain, um den CNAME Ihrer Website auf den Domainnamen Ihrer CloudFront-Verteilung zu verweisen. Sie finden den Domainnamen Ihrer Verteilung in der CloudFront-Konsole in einem Format, das d1234abcd.cloudfront.net ähnelt.
5. Warten Sie, bis Ihre DNS-Änderungen verteilt sind und bis die vorherigen DNS-Einträge abgelaufen sind.
Hinweis: Wie lange die vorherigen DNS-Werte ablaufen, hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt wurde. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.
Verwenden eines Website-Endpunkts als Ursprung mit anonymem (öffentlichem) Zugriff
Diese Konfiguration ermöglicht den öffentlichen Lesezugriff auf den Bucket Ihrer Website. Weitere Informationen finden Sie unter Festlegen von Berechtigungen für den Zugriff auf die Website.
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.
- Verwenden Sie die Amazon S3-Konsole, um einen Bucket zu erstellen und statisches Website-Hosting im Bucket zu aktivieren.
- Kopieren Sie im Dialogfeld Statisches Website-Hosting den Endpunkt Ihres Buckets ohne das führende http://. Das Format ähnelt DOC-BEISPIEL-BUCKET.s3-website-region.amazonaws.com. Sie benötigen den Endpunkt in diesem Format für einen späteren Schritt.
- 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 die Einstellungen für den öffentlichen Blockzugriff des S3 Buckets deaktiviert sein. Wenn Ihr Anwendungsfall erfordert, dass die Einstellungen zum Blockieren des öffentlichen Zugriffs aktiviert werden müssen, verwenden Sie den REST-API-Endpunkt als Ursprung. Beschränken Sie dann den Zugriff durch eine Origin-Access-Control (OAC) oder Ursprungszugriffsidentität (OAI). - Erstellen einer CloudFront-Web-Verteilung. Geben Sie zusätzlich zu den Verteilungseinstellungen, die Sie für Ihren Anwendungsfall benötigen, Folgendes ein:
Geben Sie für Ursprungs-Domäne den Endpunkt ein, den Sie in Schritt 2 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 in dieser Konfiguration nicht verwendet werden. - Bei der Erstellung Ihrer Distribution empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domäne mit HTTPS zu verwenden, wählen Sie Benutzerdefiniertes SSL-Zertifikat aus. Sie können Zertifikat anfordern auswählen, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie weiterhin HTTPS mit dem Domainnamen cloudfront.net für Ihre Verteilung verwenden.
Wichtig: Wenn Sie alternative Domainnamen (CNames) für Ihre Verteilung eingegeben haben, 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? - Aktualisieren Sie die DNS-Einträge für Ihre Domain, um den CNAME Ihrer Website auf den Domainnamen Ihrer CloudFront-Verteilung zu verweisen. Sie finden den Domainnamen Ihrer Verteilung in der CloudFront-Konsole in einem Format, das d1234abcd.cloudfront.net ähnelt.
- Warten Sie, bis Ihre DNS-Änderungen verteilt sind und bis die vorherigen DNS-Einträge abgelaufen sind.
Hinweis: Wie lange die vorherigen DNS-Werte ablaufen, hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt wurde. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.
Verwenden eines Website-Endpunkts als Ursprung, wobei der Zugriff durch einen Referenz-Header eingeschränkt ist
Diese Konfiguration schränkt den Zugriff ein, indem ein benutzerdefinierter Referer-Header für die Verteilung eingerichtet wird. Anschließend verwendet es eine Bucket-Richtlinie, um den Zugriff nur für Anforderungen mit dem benutzerdefinierten Referer-Header zu ermöglichen.
Wichtig: Prüfen Sie unbedingt, ob der von diesem Setup erlaubte Zugriff den Anforderungen Ihres Anwendungsfalls entspricht.
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.
- Verwenden Sie die Amazon S3-Konsole, um einen Bucket zu erstellen und statisches Website-Hosting im Bucket zu aktivieren.
- Kopieren Sie im Dialogfeld Statisches Website-Hosting den Endpunkt Ihres Buckets ohne das führende http://. Das Format ähnelt DOC-BEISPIEL-BUCKET.s3-website-region.amazonaws.com. Sie benötigen den Endpunkt in diesem Format für einen späteren Schritt.
- Erstellen einer CloudFront-Web-Verteilung. Geben Sie zusätzlich zu den Verteilungseinstellungen, die Sie für Ihren Anwendungsfall benötigen, Folgendes ein:
Geben Sie für Ursprungs-Domäne den Endpunkt ein, den Sie in Schritt 2 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 in dieser Konfiguration nicht verwendet werden.
Wählen Sie unter Benutzerdefinierte Kopfzeile hinzufügen die Option Header hinzufügen.
Geben Sie für Header-Name****Referer ein.
Geben Sie unter Wert einen benutzerdefinierten Headerwert 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. - Bei der Erstellung Ihrer Distribution empfiehlt es sich, SSL (HTTPS) für Ihre Website zu verwenden. Um eine benutzerdefinierte Domäne mit HTTPS zu verwenden, wählen Sie Benutzerdefiniertes SSL-Zertifikat aus. Sie können Zertifikat anfordern auswählen, um ein neues Zertifikat anzufordern. Wenn Sie keine benutzerdefinierte Domain verwenden, können Sie weiterhin HTTPS mit dem Domainnamen „cloudfront.net“ für Ihre Verteilung verwenden.
Wichtig: Wenn Sie alternative Domainnamen (CNames) für Ihre Verteilung eingegeben haben, 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? - Ö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 Anforderung den benutzerdefinierten Referer-Header enthält, den Sie in Schritt 3 angegeben haben. Für diese Konfiguration müssen die Einstellungen für den öffentlichen Blockzugriff des S3 Buckets deaktiviert sein. (Amazon S3 betrachtet eine Bucket-Richtlinie, die anonymen Zugriff gewährt, der von einem Referer eingeschränkt wird, als öffentlich). Wenn Ihr Anwendungsfall erfordert, dass die Einstellungen zum Blockieren des öffentlichen Zugriffs aktiviert sind, verwenden Sie den REST-API-Endpunkt als Ursprung. Beschränken Sie dann den Zugriff mit einer Origin-Access-Control (OAC) oder Ursprungszugriffsidentität (OAI).
Hinweis: Um den Zugriff für jede Anforderung zu blockieren, die nicht den benutzerdefinierten Referer-Header enthält, verwenden Sie eine Anweisung zur expliziten Zugriffsverweigerung in der Bucket-Richtlinie. - Aktualisieren Sie die DNS-Einträge für Ihre Domain, um den CNAME Ihrer Website auf den Domainnamen Ihrer CloudFront-Verteilung zu verweisen. Sie finden den Domainnamen Ihrer Verteilung in der CloudFront-Konsole in einem Format, das d1234abcd.cloudfront.net ähnelt.
- Warten Sie, bis Ihre DNS-Änderungen verteilt sind und bis die vorherigen DNS-Einträge abgelaufen sind.
Hinweis: Wie lange die vorherigen DNS-Werte ablaufen, hängt vom TTL-Wert ab, der in Ihrer Hosting-Zone festgelegt wurde. Es hängt auch davon ab, ob Ihr lokaler Resolver diese TTL-Werte verwendet.
Verwenden von CloudFormation zur Bereitstellung einer statischen Website, eines Endpunkts als Ursprung und einer benutzerdefinierten Domain, die auf CloudFront verweist
Mit dieser Lösung geschieht auf Ihrer Website folgendes:
- Sie wird mit CloudFormation bereitgestellt
- Sie wird auf Amazon S3 gehostet
- Sie wird über CloudFront verteilt
- Sie verwendet ein SSL/TLS-Zertifikat von AWS Certificate Manager (ACM)
- Verwendet CloudFront Response-Header-Richtlinien, um jeder Serverantwort Sicherheitsheader hinzuzufügen
Anweisungen zur Bereitstellung dieser Lösung finden Sie unter Amazon CloudFront Secure Static Website auf der GitHub-Website.
Verwandte Informationen
Erste Schritte mit einer sicheren statischen Website
Erteilen einer Nur-Lese-Berechtigung für einen anonymen Benutzer
Validieren des Domain-Besitzes per E-Mail

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 9 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr