Zend_Service_Amazon_S3EinführungAmazon S3 bietet ein einfaches Webservice Interface das verwendet werden kann um beliebige Mengen an Daten, jederzeit und von überall her aus dem Web, zu Speichern und erhalten. Es gibt Entwicklern den Zugriff auf die gleiche, hoch skalierbare, verfügbare, schnelle und kostengünstige Datenspeicher Infrastruktur die Amazon verwendet um sein eigenes globales Netzwerk an Websites zu betreiben. Der Service zielt darauf ab den Nutzen der Skalierbarkeit zu erhöhen und diese Vorteile an Entwickler weiterzugeben. Registrierung mit Amazon S3Bevor man mit Zend_Service_Amazon_S3 beginnen kann, muß man einen Account registrieren. Sehen Sie bitte auf die Amazon Website » S3 FAQ für weitere Informationen. Nach der Registrierung erhält man einen Anwendungsschlüssel und einen geheimen Schlüssel. Man benötigt beide um auf den S3 Service zugreifen zu können. API DokumentationDie Klasse Zend_Service_Amazon_S3 bietet einen PHP Wrapper zum Amazon S3 REST Interface. Schauen Sie bitte in die » Amazon S3 Dokumentation für eine detailierte Beschreibung des Services. Man muß mit dem grundsätzlichen Konzept vertraut sein um dieses Service nutzen zu können. FeaturesZend_Service_Amazon_S3 bietet die folgenden Funktionalitäten:
Beginnen wirSobald man sich mit Amazon S3 registriert hat, ist man bereit sein erstes Objekt auf S3 zu speichern. Die Objekte werden auf S3 in Containern gespeichert, die "Buckets" genannt werden. Der Name der Buckets ist auf S3 eindeutig, und jeder Benutzer kann nicht mehr als 100 Buckets simultan besitzen. Jeder Bucket kann eine unlimitierte Anzahl an Objekten enthalten, die durch den Namen identifiziert werden. Das folgende Beispiel demonstriert die Erstellung eines Buckets, und das Speichern und Empfangen von Daten. Example #1 Beispiel der Verwendung von Zend_Service_Amazon_S3
Da der Zend_Service_Amazon_S3 Service eine Authentifizierung benötigt, sollte man seine Zugangsdaten (AWS Schlüssel und Geheimschlüssel) an den Konstruktor übergeben. Wenn man nur einen Account verwendet, kann man Standard-Zugangsdaten für das Service setzen:
Bucket OperationenAlle Objekte im S3 System werden in Buckets gespeichert. Buckets müssen erstellt werden bevor Speicheroperationen durchgeführt werden. Der Name des Buckets ist im System eindeutig, so das man den Bucket nicht so benennen kann wie den Bucket einer anderen Person. Namen von Buckets können Kleinbuchstaben, Ziffern, Punkte (.), Unterstriche (_), und Bindestriche (-) enthalten. Es sind keine anderen Symbole erlaubt. Bucketnamen sollten mit einem Buchstaben oder einer Ziffer beginnen, und 3 bis 255 Zeichen lang sein. Namen die wie eine IP Adresse aussehen (z.B. "192.168.16.255") sind nicht erlaubt.
Operationen am ObjektDas Objekte ist die grundsätzliche Speichereinheit in S3. Objekte speichern nicht strukturierte Daten, welche jede Größe, bis zu 4 Gigabyte, haben können. Es gibt kein Limit in der Anzahl der Objekte die auf dem System gespeichert werden können.
Objekte werden in Buckets abgelegt. Sie werden durch den Namen identifiziert, der
jeder UTF-8 String sein kann. Es ist üblich hierarchische Namen zu verwenden (wie z.B.
Objekte können ersetzt (durch Überschreiben neuer Daten mit dem gleichen Schlüssel) oder gelöscht werden, aber nicht geändert, angefügt, usw. Objekte werden immer als Ganzes gespeichert.
Standardmäßig sind alle Objekte privat und es kann nur durch Ihren Besitzer auf Sie
zugegriffen werden. Trotzdem ist es möglich Objekte mit öffentlichem Zugriff zu
spezifizieren, wodurch man auf Sie mit der folgenden URL zugreifen
kann:
Daten StreamenEs ist möglich Objekte zu Holen und Setzen wobei keine Stream Daten verwendet werden die im Speicher sind, sondern Dateien oder PHP Streams. Das ist Speziell dann nützlich wenn Dateien sehr groß sind um nicht über Speichergrenzen zu kommen. Um ein Objekt mit Streaming zu Empfangen muss die Methode getObjectStream($object, $filename) verwendet werden. Diese Methode gibt einen Zend_Http_Response_Stream zurück, welcher wie im Kapitel HTTP Client Daten Streaming verwendet werden kann. Example #6 Beispiel für das Streamen von Daten mit Zend_Service_Amazon_S3
Der zweite Parameter für getObjectStream() ist optional und spezifiziert die Zieldatei in welche die dAten geschrieben werden. Wenn er nicht spezifiziert ist, wird eine temporäre Datei verwendet. Diese wird gelöscht nachdem das Antwort-Objekt gelöscht wurde. Um ein Objekt mit Streaming zu Senden kann putFileStream() verwendet werden. Es hat die gleiche Signatur wie putFile() verwendet aber Streaming und liest die Datei nicht in den Speicher ein. Man kann auch eine Stream Ressource an die putObject() Methode als Daten Parameter übergeben. In diesem Fall werden die Daten vom Stream gelesen wenn die Anfrage an den Server gesendet wird. Stream wrapperZusätzlich zum oben beschriebenen Interface unterstützt Zend_Service_Amazon_S3 das Arbeiten als Stream Wrapper. Hierfür muß das Client-Objekt als Stream Wrapper registriert werden: Example #7 Beispiel für Streams mit Zend_Service_Amazon_S3
Die Verzeichnis-Operationen (
|
|