Auch Entwickler brauchen Platz zum Spielen

24. Januar 2014 /

Tutorial: Amazon CloudFront mit Amazon S3 verknüpfen

Amazon CloudFront ist in Verbindung mit Amazon S3 ein zuverlässiges CDN für die Verteilung von Inhalten. Das Tutorial zeigt die Einrichtung.
Amazon AWS

Amazon S3 versteht sich als kostengünstiger Online-Speicher mit hoher Verfügbarkeit und dynamischer Skalierung (siehe dazu das Tutorial Amazon S3 mit eigener Subdomain einrichten). Die Daten werden stets vom ausgewählten Server-Standort ausgeliefert. Wurde beim Anlegen eines S3-Bucket also Irland als Ort manifestiert, so verbleiben die hochgeladenen Dateien auch tatsächlich in der EU. Kann ein Projekt bzw. eine Website international ansässige Kundschaft vorweisen, würde ein zusätzlich angelegtes CDN (Content Distribution Network) Sinn machen, da die in der Amazon Cloud abgelegten Inhalte je nach Region des Anfragestellers (Besucher einer Webseite) zurückgegeben werden. Kürzere Wege und kluge Caching-Mechanismen beschleunigen die Ausgabe des angeforderten Materials um ein Vielfaches.

Amazon S3 als Datenquelle für CloudFront
Amazon CloudFront ist eine ideale Ergänzung zu Amazon S3 und erweitert den angebotenen Speicher-Service um eine effektive Verteilung der Daten an den Client (Browser etc.). Der auf Amazon S3 übertragene Datenbestand gilt als Referenz für die weltweit positionierten Datenzentren (beinahe auf jedem Kontinent verfügt Amazon über Server-“Farmen“, selbst in Europa befinden sich 4 Standorte) und wird vom Dienstleister automatisch synchron gehalten. Die Nutzung des Dienstes ist analog zu Amazon S3 kostenpflichtig und verbrauchsabhängig. Anders jedoch als bei Amazon S3 kostet Amazon CloudFront ab der Inbetriebnahme Gebühren, da dieser Service kein Bestandteil der kostenlosen Testphase von 12 Monaten ist.

Amazon CloudFront: Gliederung der Anfragen nach Regionen
Amazon CloudFront: Gliederung der Anfragen nach Regionen

Amazon CloudFront einrichten
Jedes Amazon S3 Bucket kann mit eigener CloudFront-Distribution und entsprechend mit abweichenden Einstellungen versehen werden. Auch für diesen Zweck eignen sich Drittanbieter-Tools, diesmal wird die Aufgabe direkt im Web innerhalb der AWS Management Console erledigt.

Die Schaltfläche Create Distribution startet die Erstellung einer neuen Verknüpfung zwischen dem CDN und S3. Im Dialog das gewünschte Bucket aussuchen, abschließend ohne Anpassungen speichern. Wichtig: Ein Ladesymbol in der Liste der Distributionen signalisiert den Wartemodus, da die Daten auf kontinentale Server erst kopiert werden müssen. Je nach Datenmenge kann mehr als eine Tasse Tee ausgetrunken werden.

Amazon CloudFront Deployed Status
Distributionen mit dem Status Deployed sind im Web erreichbar

Ändert sich der Status auf Deployed, so ist die Verknüpfung zwischen dem Amazon S3 Bucket und CloudFront erfolgreich abgeschlossen. Ab diesem Zeitpunkt können im Bucket aufbewahrte Daten via einer eindeutigen CloudFront-Domain nach dem Muster zeichenfolge.cloudfront.net im Web (also auch via Browser) erreicht werden.

Genau diese Domain versteht sich als Endpunkt für einen eventuellen CNAME-Eintrag beim Hoster, um S3-Inhalte über eine eigene Subdomain erreichen zu können. Als Gegenleistung trägt der Account-Inhaber die eigene Subdomain (in unserem Beispiel cdn.domain.de) in die Eigenschaften der Distribution ein (wahlweise gleich beim Erstellen oder nachträglich im Edit-Modus). Sind DNS-Einträge der Domain-Namen auf beiden Seiten bzw. Servern fehlerfrei durchgeführt worden (und ein paar Stunden Wartezeit vergangen sind), liefert Amazon die auf S3 gelagerten Datenmengen verteilt und zwischengespeichert (dazu unten mehr) via CloudFront an den Browser aus, wobei die sichtbare Domain der Anfragen (exemplarisch) cdn.domain.de ist. So kommt die kryptische CloudFront-Domain nie zum Vorschein.



DNS-Anpassungen auf der CloudFront- und Hoster-Seite

Content-Cache für 24 Stunden
Eine Tatsache bringt viele Neulinge in Verwirrung: Dateien werden auf S3 aktualisiert, unter der CloudFront-Domain (oder der Ziel-Subdomain nach einer CNAME-Änderung) findet man noch den alten Datenbestand vor. Das liegt daran, dass Amazon CloudFront über einen Zwischenspeicher von 24 Stunden verfügt. Beim Hinzufügen neuer Dateien zu einem Amazon S3 Bucket spiegelt CloudFront den Neuzugang unverzüglich auf eigene Rechner, merkt sich den aktuellen Stand für einen vollen Tag. Diese Technik minimiert die Traffic-intensive, kostspielige Kommunikation und den Abgleich zwischen dem Mutterserver Amazon S3 und den unzähligen Rechnern der CloudFRont-Familie.

Also bei Updates von statischen Elementen auf S3 in Verbindung mit CloudFront immer dran denken, dass Veränderungen an einer eben hochgeladenen Datei erst in einem Tag sichtbar sein werden. Ein Zurücksetzen des Cache auf Amazon CloudFront ist nicht möglich. Laut Dokumentation wäre eine Steuerung des Aufbewahrungszeitraumes via Cache-Header der einzelnen Dateien denkbar.

Bemerkung: Jeder Distribution kann neben einer Datei für mögliche HTTP-Fehler ebenfalls eine Root-Datei zugewiesen werden, die sich selbstverständlich im Amazon S3 Bucket befinden muss. In der Regel sind es unkomplizierte HTML-Seiten mit statischen Hinweistexten oder mit einem Meta- und JavaScript-Redirect auf eine gewünschte Zielseite im Web.

Fazit
Zumindest bis ein Blitz die Cloud-Rechenzentren erreicht und den Stromschalter umlegt, bleibt Amazon S3 in Kombination mit Amazon CloudFront eine nahezu perfekte Lösung für ein zuverlässiges CDN-Hosting für statische Inhalte zum kalkulierbaren Preis.

Sergej Müller

[Der Autor]Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung, Apps und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das zugkräftige SEO-Plugin für WordPress-Blogs.

Thematisch ähnliche Beiträge