Wann wird Amazon Cloudfront oder S3 verwendet?

231

Gibt es Anwendungsfälle, die sich besser für Amazon Cloudfront über S3 oder umgekehrt eignen? Ich versuche den Unterschied zwischen den beiden anhand von Beispielen zu verstehen.

Kamo
quelle
1
Wenn Sie Dateien bereitstellen, können Sie nur mit CloudFront HTTPS für eine benutzerdefinierte Domäne verwenden. Das hat es für uns besiegelt.
mlissner

Antworten:

372

Amazon S3 wurde für die kostengünstige Speicherung von Dateien mit großer Kapazität in einer bestimmten geografischen Region entwickelt. * Die Speicher- und Bandbreitenkosten sind recht niedrig.

Amazon CloudFront ist ein Content Delivery Network (CDN), das Webdaten an Randstandorten so nah wie möglich an Benutzern weiterleitet und zwischenspeichert.

Wenn Endbenutzer ein Objekt mit diesem Domänennamen anfordern, werden sie automatisch an den nächstgelegenen Randort weitergeleitet, um eine leistungsstarke Bereitstellung Ihrer Inhalte zu ermöglichen. ( Amazon )

Die von CloudFront bereitgestellten Daten können von S3 stammen oder nicht. Da es für die Liefergeschwindigkeit optimiert ist, kostet die Bandbreite etwas mehr.

Wenn Ihre Benutzerbasis lokalisiert ist , werden Sie bei der Arbeit mit S3 oder CloudFront keinen allzu großen Unterschied feststellen (Sie müssen jedoch den richtigen Speicherort für Ihren S3-Bucket auswählen: USA, EU, APAC). Wenn Ihre Benutzerbasis global verteilt ist und Geschwindigkeit wichtig ist, ist CloudFront möglicherweise die bessere Option.

Sowohl S3 und Cloudfront Domain Aliase erlauben, jedoch ermöglicht Cloudfront mehr Aliase , so dass d1.mystatics.com, d2.mystatics.comund d3.mystatics.comkönnte alle auf die gleiche Stelle die Kapazität für parallele Downloads zu erhöhen (dies verwendet , um durch zu empfehlen Google aber mit der Einführung von SPDY und HTTP / 2 ist geringere Bedeutung).

CloudFront unterstützt ab 2014 auch CORS (danke sergiopantoja).

* Hinweis: S3 kann ab 2015 automatisch in weitere Regionen repliziert werden.

Eillarra
quelle
10
Danke, tolle Antwort.
Kamo
3
Es gibt einen Unterschied für Web-Schriftarten, da CloudFront CORS nicht vollständig unterstützt. Die Header werden in der S3-Antwort zwischengespeichert, aber für eine vollständige CORS-Unterstützung sollten einige Header je nach anforderndem Server (Ursprung) variieren. Umgehen
Cymen
11
Um dies auf dem neuesten
sergiopantoja
Beachten Sie, dass Cloudfront Inhalte sehr schnell entfernt. Wenn Sie das maximale Alter auf mehr als einen Tag einstellen, bedeutet dies nicht, dass Ihre Inhalte nicht entfernt werden, wenn sie 61 Minuten lang nicht berührt wurden. Nicht viel Verwendung für benutzerspezifische Inhalte, da dies zu einem seltenen Zugriff führt.
BobB
52

CloudFront und S3 Bucket sind nicht dasselbe . In Laienbegriffen: Mit CloudFront können Sie die Bereitstellung von Inhalten für Ihre Webinhalte über das Content Delivery Network (CDN) an Edge-Standorten beschleunigen, während Sie in S3 Buckets Ihre eigentlichen Dateien speichern. CloudFront-Quellen müssen nicht unbedingt aus S3 stammen, dienen jedoch zur einfacheren Visualisierung der S3-Integration in CloudFront: Geben Sie hier die Bildbeschreibung ein

mel3kings
quelle
Vielen Dank! Dieses Diagramm zeigt den Unterschied deutlich.
Rajan Sharma
28

Ein weiterer wichtiger Unterschied besteht darin, dass Sie mit CloudFront die Site auf Ihrem Server spiegeln können. Cloudfront speichert dann die Dateien wie Bilder, MP3 oder Videos über das Content Delivery-Netzwerk zwischen.

Dies erspart Ihnen das Duplizieren Ihrer Assets wie bei Verwendung von Amazon S3.

Nach Ablauf einer Datei ruft CloudFront sie jedoch erneut (kostenpflichtig) von Ihrer Live-Site ab. Daher eignet sich die Cloud-Front am besten für Dateien, auf die häufig zugegriffen wird, und weniger für Dateien, auf die selten zugegriffen wird.

Eine Möglichkeit, den Dateiverlauf für Apache festzulegen, ist .htaccess. Beispielsweise

<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>
dwenaus
quelle
20

Amazon CLOUDFRONT und S3 sind zwei verschiedene Dienste, die von Amazon Web Services bereitgestellt werden.

Amazon S3 ist ein Speicherdienst, in dem wir statische Dateien speichern können wie:

CSS, Bilder, Javascripts, Videos usw.

Amazon CloudFront ist eine Middleware, die zwischen einem Benutzer, der eine Datei von AWS anfordert, und dem S3-Rechenzentrum in einer bestimmten Region steht. CloudFront wird verwendet, um die Verteilung Ihrer statischen und dynamischen Webinhalte von S3 an den Benutzer zu beschleunigen.

Sie können es anhand eines Beispiels besser verstehen:

Ihr S3 befindet sich beispielsweise in der AWS-Region US East (N. Virginia), einem Rechenzentrumsstandort zum Speichern Ihrer Dateien.

Wenn ein Benutzer aus Indien versucht, von einem AWS-Server in Virginia aus auf eine Datei zuzugreifen, muss der Benutzer mit einer Anfrage zu diesem bestimmten Speicherort gehen. Dies nimmt viel Zeit in Anspruch.

CloudFront ist eine Middleware zwischen Benutzer und AWS S3.


Die am häufigsten verwendeten Dateien können in CloudFront zwischengespeichert werden. Dabei werden diese Dateien an Edge-Speicherorten repliziert. (Um Inhalte an Endbenutzer mit geringerer Latenz zu liefern, verwendet Amazon CloudFront ein globales Netzwerk von Edge-Speicherorten für die Bereitstellung von Inhalten.)

Befindet sich der Inhalt bereits am Rand mit der geringsten Latenz, wird er von CloudFront sofort bereitgestellt. Befindet sich der Inhalt derzeit nicht an diesem Randort, ruft CloudFront ihn aus einem Amazon S3-Bucket ab und stellt ihn dem Benutzer so schnell wie möglich zur Verfügung.

Jede Anfrage erhält ein neues DNS von CloudFront an den S3, was zu weniger Datenverkehr und einer paralleleren Anforderungsverarbeitung führen würde.

Es folgt die Liste der aktuellen Randstandorte per Juli 2016: -

Vereinigte Staaten

  • Ashburn, VA (3)
  • Atlanta, GA
  • Chicago, Illinois
  • Dallas / Fort Worth, TX (2)
  • Hayward, CA.
  • Jacksonville, FL
  • Los Angeles, CA (2)
  • Miami, Florida
  • New York, NY (3)
  • Newark, NJ
  • Palo Alto, CA.
  • San Jose, CA.
  • Seattle, WA
  • South Bend, IN
  • St. Louis, MO

Europa

  • Amsterdam, Niederlande (2)

  • Dublin, Irland

  • Frankfurt, Deutschland (3)

  • London, England (3)

  • Madrid, Spanien

  • Marseille, Frankreich

  • Mailand, Italien

  • Paris, Frankreich (2)

  • Stockholm, Schweden

  • Warschau, Polen

Asien

  • Chennai, Indien

  • Hongkong (2)

  • Mumbai, Indien

  • Manila, die Philippinen

  • Neu Delhi, Indien

  • Osaka, Japan

  • Seoul, Korea (3)

  • Singapur (2)

  • Taipei, Taiwan

  • Tokio, Japan (2)

Australien

  • Melbourne, Australien

  • Sydney, Australien

Südamerika

  • Sao Paulo, Brasilien

  • Rio de Janeiro, Brasilien

Daraus können Sie schließen, dass Sie CloudFront auf keinen Fall verwenden müssen, wenn die Anzahl der Benutzer aus derselben Region stammt, in der Ihr S3 gehostet wird. Wenn sich die Anzahl der Benutzer auf globaler Ebene erhöht, sollten Sie auf jeden Fall CloudFront verwenden für bessere Latenz und Verkehrskontrolle.

Patrick R.
quelle
1
Dies ist die beste Antwort
João Otero
14

Ein weiterer Fall für die Verwendung von CloudFront über S3 besteht darin, dass Sie ein SSL-Zertifikat für eine benutzerdefinierte Domäne in CloudFront verwenden können, während dies in S3 nicht möglich ist. Ein ziemlich guter Grund imho!

rgubby
quelle
2
Und mit dem neuen Certificate Manager ist das noch ganz einfach!
Phatmann
7

Amazon S3 ist ein einfacher Speicherdienst, mit dem eine große Menge an Informationen verwendet werden kann, z. B. Videos, Bilder, PDF usw.

CloudFront ist ein Content Delivery Network, das näher am Endbenutzer liegt und dazu dient, die Informationen in kürzester Zeit auf Amazon S3 verfügbar zu machen.

Ein Beispiel für einen Anwendungsfall ist Video on Demand.

  1. Sie speichern Ihre Videos an einem Ort. S3 speichert alle aufgezeichneten Videos in verschiedenen Formaten.
  2. Sie haben einen globalen Benutzerfall
  3. CloudFront wird verwendet, um das Video an Randpositionen zwischenzuspeichern. Dies kann verwendet werden, um Inhalte an den Endbenutzer zu liefern. Der Standort wird automatisch basierend auf dem nächstgelegenen physischen Randstandort erfasst. Derzeit gibt es rund 51 Randstandorte.

Einige Vorteile der Verwendung von CloudFront für den richtigen Anwendungsfall:

  1. Verbesserte Latenz - Bessere Benutzererfahrung.
  2. Mögliche reduzierte Datenübertragungskosten. Da die Daten nicht jedes Mal aus demselben S3-Bucket in einer bestimmten AWS-Region übertragen werden.

Andere mögliche Anwendungsfälle:

  1. Live-Streaming
  2. Spielen
  3. Website-Beschleunigung
Gurmeet_BlazeClan
quelle
4

Ein Aspekt, der hier übersehen wird, ist:

Amazon Cloudfront bietet auch niedrigere Preise als Amazon S3 bei höheren Nutzungsstufen.

  • Cloudfront CDN dient zur Verteilung von Inhalten auf mehrere geografisch verteilte Server (CSS, JS).

  • Während s3 eher ein pro Benutzer weniger genutzter Ressourcenspeicher ist (Benutzerbilder, PDFs).

Sie können Ihre Cloudfront-Ressourcen von einem S3-Bucket aus bereitstellen, ohne Ihren Webserver zu umgehen.

( Nützlich in Situationen, in denen Ihr Webserver Bilder und Java-Skripte vorkompiliert und speichert. Wenn Sie diese auf s3 speichern, wird der Speicherbedarf Ihres Servers verringert. )

Beispiel: Auf Heroku Slugs (konforme Anwendungsgrößen können durch Verwendung von s3 reduziert werden, und das Umschließen mit Cloud-Front-CDN verbessert den Durchsatz)

Abs
quelle
2

Als erstes möchte ich erklären, dass Amazon S3 der Cloud-Speicher und Cloud Front das Content Delivery Network (CDN) ist.

Sie können also die Dateien in S3 speichern und die Verteilung erstellen, um den Inhalt über das Internet bereitzustellen. Außerdem können Sie eine Verteilung für die spezifischen Regionen erstellen.

Kailash Malav
quelle
1

Amazon S3 ist eine großartige Objektspeicherplattform, wenn Sie nach einem global verteilten Speichersystem suchen, das vor dem Ausfall von Regionen / Zonen schützt. Es eignet sich auch hervorragend für statische / feste Inhalte, die nicht transaktional sind und sich ändern, wie Bilder, Videos, Bilder, Backups usw. Ich hoffe, das hilft!

JStorage
quelle