Gibt es eine Möglichkeit, die index.html-Funktionalität mit Inhalten zu nutzen, die auf S3 gehostet werden?
-
09-06-2019 - |
Frage
Gibt es eine Möglichkeit, S3 standardmäßig auf eine index.html-Seite festzulegen?Z.B.:Meine Bucket-Objektliste:
/index.html
/favicon.ico
/images/logo.gif
Ein Aufruf an www.example.com/index.html funktioniert super!Aber wenn man anrufen würde www.example.com/ Abhängig davon, wie die ACL auf Bucket-Ebene konfiguriert wurde, erhielten wir entweder ein 403- oder ein REST-Objektlisten-XML-Dokument.
Also die Frage:Gibt es eine Möglichkeit, die index.html-Funktionalität mit Inhalten zu nutzen, die auf S3 gehostet werden?
Lösung
Amazon S3 unterstützt jetzt Indexdokumente
Der Indexdokument denn ein Bucket kann auf so etwas eingestellt werden index.html
.Beim Zugriff auf das Stammverzeichnis der Site oder ein Unterverzeichnis, das ein Dokument mit diesem Namen enthält, wird dieses Dokument zurückgegeben.
Mit der AWS-CLI geht das ganz einfach:
aws s3 website $MY_BUCKET_NAME --index-document index.html
Sie können das einstellen Indexdokument über die AWS-Managementkonsole:
Andere Tipps
Für Leute, die nach drei Jahren immer noch damit zu kämpfen haben, möchte ich einige wichtige Informationen hinzufügen:
Die URL für Ihre Website (und auf die Sie Ihr DNS verweisen müssen) ist nicht vorhanden
<bucket_name>.s3-us-west-2.amazonaws.com
, Aber
<bucket_name>.s3-website-us-west-2.amazonaws.com
.
Wenn Sie das erste verwenden, funktioniert es nicht wie vorgesehen, egal wie stark Sie es konfigurieren Indexdokument.
Betrachten Sie als konkretes Beispiel Folgendes:
- http://www-example-com.s3.amazonaws.com/index.html funktioniert.
- http://www-example-com.s3.amazonaws.com/ scheitert mit
AccessDenied
. - http://www-example-com.s3-website-us-west-2.amazonaws.com/ funktioniert!
Um Ihre wahre Website-Adresse zu erhalten, gehen Sie zu Ihrer S3-Verwaltungskonsole, wählen Sie dann den Ziel-Bucket aus Properties
, Dann Static Website Hosting
.Es wird die Website-URL angezeigt, die funktioniert.
Sie können es ganz einfach mit Amazon CloudFront lösen Verknüpfung.Bei Amazon CloudFront können Sie das Root-Objekt ändern.Sie können den Manager hier herunterladen:m1.mycloudbuddy.com/downloads.html.
Es ist lange her, dass diese Frage gestellt wird und Amazon S3 seine Benutzeroberfläche ändert.Ich möchte mit aktualisierten Screenshots antworten.
Wir müssen „statisches Webhosting“ aktivieren, damit S3 als Webhosting dienen kann.- Gehen Sie zu Eigenschaften -> Klicken Sie auf statisches Webhosting -> Wählen Sie 'Verwenden Sie diesen Bucket, um eine Website zu hosten.' - Geben Sie das Indexdokument (index.html standardmäßig), Fehlerdokument und Umleitungsregeln ein, falls vorhanden.
Wie in beantwortet https://stackoverflow.com/a/24377823/3086531, Webhosting-Link wäre
Ich würde vorschlagen, es zu lesen dieser Thread aus dem Jahr 2006 (Über Amazon Web Services Developers Connection).Es scheint, dass es dafür keine einfache Lösung gibt.
Ja.Mit AWS Cloudfront können Sie eine Standarddatei zuweisen.
Sie können dies mithilfe von DNS-Webforwards und Cloaking tun.Gehen Sie einfach zum vollständigen Pfad der index.html weiter
www.example.com leitet weiter an http://www.example.com.s3.amazonaws.com und stellen Sie sicher, dass Sie die Ausgabe tarnen.