Ich hoste eine statische Website auf Amazon S3 mithilfe der Hosting-Option für statische Websites, sodass S3 einen Ordner rendert, ohne dass ich explizit auf meine Datei index.html verweise.
Hier ist zum Beispiel ein direkter Link zu einer Seite in meinem S3-Bucket: http://new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/ Wie Sie sehen können, wann Wenn Sie diese URL besuchen, rendert Amazon S3 automatisch die Datei index.html in diesem Verzeichnis, sodass ich saubere URLs haben kann.
Dies alles funktioniert gut auf S3. Das Problem, das ich habe, ist, dass Amazon Cloudfront auch dieses Verhalten richtig handhabt. Wenn ich eine Cloudfront-Distribution mit meinem als Ursprung angegebenen S3-Bucket erstelle und ihn anweise, 'index.html' als Root zu verwenden, funktioniert das Verhalten von index.html in S3 nicht mehr.
Hier ist zum Beispiel meine gleiche URL wie oben in Cloudfront: http://d1mj00c6pby3gc.cloudfront.net/category/2009/
Leider funktioniert die obige URL NICHT, aber wenn ich die Indexdatei manuell spezifiziere, funktioniert dies beispielsweise: http://d1mj00c6pby3gc.cloudfront.net/category/2009/index.html
Meine Frage lautet: Wie muss ich Cloudfront so konfigurieren, dass meine S3-Bucket-Einstellungen für meine Website berücksichtigt werden?
quelle
Antworten:
Die Funktionen der S3-Website können in Verbindung mit Amazon CloudFront verwendet werden. Die S3-Website verwendet jedoch einen anderen Domainnamen als normale S3-Buckets. In diesem Fall müssen Sie
Origin Domain Name
die Ursprungskonfiguration Ihrer CloudFront-Distribution auf festlegennew.rdegges.com.s3-website-us-east-1.amazonaws.com
.Sie können diese URL (Endpunkt) aus dem Bereich "Statisches Website-Hosting" in S3 entnehmen:
Sobald CloudFront auf den Domainnamen der S3-Website verweist, sollten die Funktionen der S3-Website funktionieren.
quelle
Ich möchte der akzeptierten Antwort einige Dinge hinzufügen.
Stellen Sie zunächst sicher, dass Sie eine
Default Root Object
Cloud-Front haben. Wie in der Dokumentation angegeben, gilt dies nicht fürsubdirectories
.Wenn Sie eine neue Cloudfront-Distribution einrichten, können Sie Ihren Bucket auswählen
bucket-name.s3.amazonaws.com
. Beachten Sie, dass die Region nicht in der URL angegeben ist. Was Sie tun müssen, ist, die statische Site-URL von s3 abzurufen und diese alsorigin url
(die Region wird dort sein) zu verwenden.quelle
Dies könnte spät im Spiel sein, aber schauen Sie sich Lambda @ Edge an . Sie können Origin Requests ohne Erweiterung abfangen und auf das Dokument index.html im Ordner verweisen. Diese Ergebnisse werden zwischengespeichert, sodass der Lambda nur ausgeführt wird, wenn er eine neue Anforderung erhält.
quelle