Ich versuche, etwas zu tun, das relativ einfach sein sollte - ich möchte einige Domains und Subdomains einrichten, um zur Kerndomain für unsere Site umzuleiten, aber ich möchte die Weiterleitungen auf Cloudfront veröffentlichen. Alles funktioniert, außer dass der Stammpfad umgeleitet wird. Dadurch erhalte ich eine XML-Datei, die den S3-Bucket teilweise beschreibt.
Hintergrund
S3
Mit S3 können Sie einen All-Redirect-Bucket einrichten , z.
Wenn Sie dies testen, macht der Web-Endpunkt (brass9-com.s3-website-us-west-1.amazonaws.com) das, was er sollte - er leitet zu brass9.com weiter. Gut.
Cloudfront
Mit Cloudfront können Sie auf einen S3-Bucket zeigen, aber die Art und Weise, wie dies vorgeschlagen wird, ist falsch. Anstatt wie brass9-com.s3.amazonaws.com auf den Bucket mit seinem Namen zu zeigen, müssen Sie den obigen Web-Endpunkt verwenden . Ansonsten können Sie alles auf den Standardeinstellungen belassen und ein gutes Umleitungsverhalten erzielen. Ein Pfad wie www.brass9.com/portfolio leitet also ordnungsgemäß dorthin weiter , wo er sollte. Auch gut.
Das Problem - die Root-Domain-Umleitung
Das einzige, was dann nicht funktioniert, ist die Umleitung von einfach www.brass9.com . Anstatt eine Weiterleitung zu erhalten, erhalten Sie dieses seltsame Ergebnis:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
OK... . So ist dies nicht ganz unerwartet - weil es kein Standard - Root - Objekt ist. Aber welches Standardstammobjekt würde ich möglicherweise angeben, um dieses Verhalten zu verhindern? Wie heißt das S3-Umleitungsobjekt, auf das ich verweisen muss? Oder gibt es eine andere richtige Konfiguration oder ist dies nur ein Fehler in der Interaktion zwischen Cloudfront und S3, den Amazon beheben muss?
Bekannte nicht funktionierende Lösung: Standardstammobjekt
Es ist möglich, ein Standardstammobjekt von index.html anzugeben, aber es hilft keinem - es ändert nur das Problem. Die Cloudfront-URL leitet stattdessen zu /index.html auf der Hauptwebsite um, bei der es sich um eine 404 handelt (wir verwenden keine index.html-Datei, sondern eine serverseitige Framework-gesteuerte Site). Ich könnte eine index.html auf den Server stellen, aber das macht den geringen Geschwindigkeitsgewinn der Verwendung von Cloudfront zunichte.
Ähnliche Fragen
Eine Frage stellt etwas Ähnliches, gibt jedoch aus irgendeinem Grund eine leere 0-Byte-Antwort zurück, anstatt eine XML-Antwort. Es enthält keine Frage zu diesem Problem oder eine Lösung.
Zum Thema passende Artikel
In einem Artikel wird vorgeschlagen, dass Sie nur die gesamte Website sowohl auf der Bare- als auch auf der WWW-Domain bereitstellen . Dies passt zu den Lesezeichen eines Benutzers, Ihrem Suchranking usw. Sie sollten dies nicht tun.
Einige diskutieren das Hosten einer statischen Website auf S3 und Cloudfront anstelle eines Umleitungsschemas und sind daher nicht miteinander verbunden.
Wie mache ich das richtig?
Screenshot der Cloudfront-Konfiguration - kein Standardstammobjekt, das auf den S3-Ursprung zeigt. InProgress ignorieren - Ich hatte gerade das Standardstammobjekt zum Testen ein- und ausgeschaltet.
Und die Origin-Konfiguration für diese Distribution:
quelle
GET /
bevor Sie Ihre Konfiguration für die Verwendung des Webendpunkts korrigiert haben.Antworten:
Wenn Sie dieses Problem haben, überprüfen Sie zuerst, wenn Sie den s3-Bucket-Ursprung für die Cloudfront konfigurieren. Die automatische Vervollständigung gibt den s3-REST-Endpunkt domain.amazonaws.com zurück, der diese ListBucketResult-Antwort zurückgibt.
Sie müssen den Website-Endpunkt domain.s3-website-region.amazonaws.com manuell notieren
Wichtig: Wenn Sie die Cloudfront mit dem REST-Endpunkt falsch konfiguriert haben, müssen Sie den Cache durch Invalidierungen ungültig machen. Andernfalls wird die REST-Antwort weiterhin zurückgegeben
quelle
origin
Block der Verteilung, Verwendungaws_s3_bucket.BUCKET.website_endpoint
in demdomain_name
(nichtbucket_regional_name
) und den Add -custom_origin_config
Block.Lösung: Richten Sie die Umleitung wie in der Frage angegeben ein und warten Sie die S3- und CloudFront-Cache-Zeiten ab. Sie können 4 Stunden oder länger dauern, Sie müssen also nur alles einrichten und dann warten und auf das Beste hoffen.
(Dies ist Michaels Lösung aus den Kommentaren, aber es ist jetzt Jahre her und dies hat es wirklich verdient, als beantwortet markiert zu werden.)
quelle
Schreiben als Antwort, da ich keinen Kommentar abgeben kann. Aus der Dokumentation unter http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements geht hervor, dass Sie ein leeres Standardstammobjekt haben können:
quelle