Fragen zur Verwendung von Amazon CloudFront und / oder S3 als Image-Server (im Vergleich zum Standard-Apache-Server)

8

Gegenwärtig habe ich eine Website, die dynamischen (PHP-MySQL) Inhalt von einem Apache-Server bereitstellt und statischen Inhalt (JavaScript, Bilder) von einem separaten Lighthttpd-Server bereitstellt.

Aus Gründen der Skalierung möchte ich Amazon Cloudfront und möglicherweise S3 verwenden. Um ehrlich zu sein bin ich mir nicht ganz sicher, wie S3 oder CloudFront funktionieren. Ich bin an das normale Serververhalten gewöhnt: "Lade eine Datei hoch ... es wird verfügbar" und S3 "Buckets" und CloudFront Edge-Mirroring sind entmutigend.

Ich brauche ein besseres Verständnis davon, wie das funktioniert und habe einige Fragen:

1) Ich möchte keine Bilder auf meinen eigenen Servern speichern. Ich möchte, dass sie vollständig in der Cloud sind. Habe ich Recht, dass dies bedeutet, dass ich S3 als "Ursprungsserver" für die Speicherung verwenden muss? Wird CloudFront alleine nicht ausreichen? Ist CloudFront nur der Edge-CDN-Dienst?

2) Gegenwärtig laden wir Bilder über ein PHP-Skript hoch, das sie auf unseren Bildserver überträgt oder per manuellem FTP-Upload. Wie wird sich das ändern, wenn ich S3 benutze? Ich habe gehört, Sie können nicht FTP zu ihm? : (

3) Kann ich bei Verwendung von S3 noch hierarchische Verzeichnisse erstellen und Bilder darin speichern? Die Bilder sind in verschiedenen Ordnern gespeichert und ich kann es mir nicht leisten, den Code zu ändern, aber ich habe gehört, S3 war ein flacher "Eimer"?

4) Schließlich habe ich gehört, dass mit CloudFront, wenn sich eine Datei ändert, Sie eine Ungültigmachungsanfrage stellen müssen, die Geld kostet. Liegt das daran, dass CloudFront das Image vom Ursprung zwischenspeichert? Ich bin nicht daran gewöhnt, wie ich in meinem aktuellen Setup nur ein Bild über FTP ersetze und es aktualisiert! Gibt es keine Möglichkeit, dieses klassische Verhalten nachzuahmen?

Herzlichen Dank für Ihre Hilfe.

    
WackGet 04.10.2012, 22:36
quelle

2 Antworten

18
  

1) Ich möchte keine Bilder auf meinen eigenen Servern speichern. Ich möchte, dass sie vollständig in der Cloud sind. Habe ich Recht, dass dies bedeutet, dass ich S3 als "Ursprungsserver" für die Speicherung verwenden muss? Wird CloudFront alleine nicht ausreichen? Ist CloudFront nur der Edge-CDN-Dienst?

S3 ist für die langfristige, zuverlässige Speicherung von Daten mit elf 9s Haltbarkeit ausgelegt. Buckets (wie sie genannt werden) sind regionalspezifisch und leben in einem der regionalen Rechenzentren von Amazon .

Umgekehrt ist CloudFront als eine Reihe von Edge-Servern konzipiert. Wenn Sie ein Objekt (z. B. Datei) von einem CloudFront-Hostnamen anfordern, wird dieses Objekt standardmäßig aus dem Ursprungsspeicherort abgerufen und für 24 Stunden im nächsten CloudFront-Edge-Speicherort zwischengespeichert (dies kann programmgesteuert angepasst werden) ). Am Ende von 24 Stunden läuft der Cache ab und CloudFront wird eine neue Kopie ziehen, wenn das Objekt das nächste Mal angefordert wird.

Eine allgemeine Konfiguration besteht darin, CloudFront so zu konfigurieren, dass S3 als Ursprungsspeicherort verwendet wird. CloudFront hat auch die Möglichkeit, beliebige Server zu verwenden, wenn Sie das bevorzugen (es klingt so als ob Sie es nicht möchten).

  

2) Gegenwärtig laden wir Bilder über ein PHP-Skript hoch, das sie auf unseren Bildserver überträgt oder per manuellem FTP-Upload. Wie wird sich das ändern, wenn ich S3 benutze? Ich habe gehört, Sie können nicht FTP zu ihm? : (

S3 ist kein FTP-Server, daher spricht das (S) FTP-Protokoll nicht. Fast alle FTP-Clients für Mac OS X enthalten jedoch Unterstützung für Amazon S3. Amazon S3 verfügt über eine Webdienst-API, sodass Sie den Push mit einem der AWS-SDKs automatisieren können, wenn Sie möchten.

Ein Werkzeug, Cyberduck , macht SSH, SFTP, FTP, Amazon S3 und ein paar andere Dinge. Es ist für Mac und Windows verfügbar. Es gibt auch andere Tools, die eine GUI zum Hochladen auf S3 bereitstellen, so einfach, als würden Sie über FTP hochladen.

  

3) Kann ich bei Verwendung von S3 noch hierarchische Verzeichnisse erstellen und Bilder darin speichern? Die Bilder sind in verschiedenen Ordnern gespeichert und ich kann es mir nicht leisten, den Code zu ändern, aber ich habe gehört, S3 war ein flacher "Eimer"?

Ja und nein.

Ja, S3 ist ein einfaches Dateisystem, aber Dateien können Schrägstriche in ihren Namen haben. Zum Beispiel ist "abc / def / ghi / jkl.txt" nicht eigentlich 3 Ordner und eine Datei, sondern eine Datei mit Schrägstrichen in ihrem Dateinamen. Die meisten GUI-Tools wählen dies als Ordner und Unterverzeichnisse und die S3-URL sieht genauso aus wie jede andere URL. Persönlich gesprochen, musste ich für S3 nie etwas anderes tun als früher für SFTP.

  

4) Schließlich habe ich gehört, dass mit CloudFront, wenn sich eine Datei ändert, Sie eine Ungültigmachungsanfrage stellen müssen, die Geld kostet. Liegt das daran, dass CloudFront das Image vom Ursprung zwischenspeichert? Ich bin nicht daran gewöhnt, wie ich in meinem aktuellen Setup nur ein Bild über FTP ersetze und es aktualisiert! Gibt es keine Möglichkeit, dieses klassische Verhalten nachzuahmen?

Richtig. Weil CloudFront die Quelldatei auf den nächsten Edge-Server zwischenspeichert. Standardmäßig ist das Ablaufdatum 24 Stunden, aber Sie können es so niedrig wie 1 Stunde setzen, oder es sogar früher mit einer "Ungültigmachungsanfrage" ablaufen lassen. Ich habe gesehen, dass dieser Vorgang zwischen 3 und 15 Minuten dauern kann, da CloudFront alle der Edge-Server überprüfen muss, um sicherzustellen, dass sie alle gelöscht sind.

Wenn Sie das Caching nicht möchten, können Sie einfach S3 direkt verwenden. Dies ist dem Ersetzen eines Bildes über FTP am nächsten, aber dann verlieren Sie alle Vorteile eines CDN an erster Stelle.

Laut Amazon CloudFront-Preisgestaltung :

  

"Keine zusätzlichen Kosten für die ersten 1.000 Dateien, die Sie jeden Monat zur Ungültigerklärung anfordern. $ 0.005 pro Datei, die danach in Ihren Ungültigmachungsanträgen aufgeführt sind."

Das ist ein halber Penny für jede Datei, für die Sie in einem Monat mehr als 1.000 ungültig machen. Ich benutze CloudFront regelmäßig und habe nie diese Grenze überschritten, aber wenn Sie eine größere Site mit vielen und vielen Änderungen betreiben, dann ist das sicher eine Möglichkeit.

Ich hoffe, das hilft! :)

    
Ryan Parman 05.10.2012, 06:24
quelle
0

Ich habe eine ganze Reihe von Client-Anwendungen getestet und den CloudBerry S3 Explorer für Windows und CrossFTP für Mac mächtiger als Cyberduck gefunden, aber ich arbeite viel mit privaten Video- und Audio-Streams, also sind meine Anforderungen etwas höher als das Anzeigen von Bildern eine Website.

Aber um Ihre letzte Frage zu beantworten, können Sie einen Ordner mit Unterordnern in einen Bucket ziehen, die Hierarchie wird respektiert. Sie können Ordner in einem Bucket bearbeiten, genau wie Sie mit FTP arbeiten. Sie müssen jedoch sicherstellen, dass Ihre Bilder veröffentlicht werden oder Ihre Bilder nicht angezeigt werden.
Standardmäßig wird jede Datei als private Datei hochgeladen, für die eine signierte URL erforderlich ist. Mit einer Client-Anwendung können Sie jedoch die Vererbung eines Buckets festlegen, sodass Dateien automatisch öffentlich werden. Hier finden Sie viele Informationen dazu: Ссылка

Prost, Rudolf +++

    
Rudolf B 06.10.2012 11:28
quelle