Zend_Service_WindowsAzure_Blob.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.windowsazure.storage.blob">
  5. <title>Zend_Service_WindowsAzure_Storage_Blob</title>
  6. <para>
  7. Blob Speicher speichert ein Set von Binären Daten. Blog Speicher bietet die folgenden drei
  8. Ressourcen an: den Speicher Account, Container und Blobs. Im eigenen Speicher Account bieten
  9. Container einen Weg um Sets von Blobs im Speicher Account zu organisieren.
  10. </para>
  11. <para>
  12. Blog Speicher wird von Windows Azure als <acronym>REST</acronym> <acronym>API</acronym>
  13. angeboten welcher von der Klasse
  14. <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> umhüllt ist um ein natives
  15. <acronym>PHP</acronym> Interface zum Speicher Account zu bieten.
  16. </para>
  17. <sect2 id="zend.service.windowsazure.storage.blob.api">
  18. <title>API Beispiele</title>
  19. <para>
  20. Dieser Abschnitt zeigt einige Beispiele der Verwendung der Klasse
  21. <classname>Zend_Service_WindowsAzure_Storage_Blob</classname>. Andere Features sind im
  22. Download Paket vorhanden sowie in der detailierten <acronym>API</acronym> Dokumentation
  23. dieser Features.
  24. </para>
  25. <sect3 id="zend.service.windowsazure.storage.blob.api.create-container">
  26. <title>Erstellung einer Speicher Containers</title>
  27. <para>
  28. Bei Verwendung des folgenden Codes kann ein Speicher Container auf dem Development
  29. Speicher erstellt werden.
  30. </para>
  31. <example id="zend.service.windowsazure.storage.blob.api.create-container.example">
  32. <title>Erstellung eines Speicher Containers</title>
  33. <programlisting language="php"><![CDATA[
  34. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  35. $result = $storageClient->createContainer('testcontainer');
  36. echo 'Der Name des Containers ist: ' . $result->Name;
  37. ]]></programlisting>
  38. </example>
  39. </sect3>
  40. <sect3 id="zend.service.windowsazure.storage.blob.api.delete-container">
  41. <title>Löschen eines Speicher Containers</title>
  42. <para>
  43. Bei Verwendung des folgenden Codes kann ein Blob Speicher Container vom Development
  44. Speicher entfernt werden.
  45. </para>
  46. <example id="zend.service.windowsazure.storage.blob.api.delete-container.example">
  47. <title>Löschen eines Speicher Containers</title>
  48. <programlisting language="php"><![CDATA[
  49. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  50. $storageClient->deleteContainer('testcontainer');
  51. ]]></programlisting>
  52. </example>
  53. </sect3>
  54. <sect3 id="zend.service.windowsazure.storage.blob.api.storing-blob">
  55. <title>Speichern eines Blobs</title>
  56. <para>
  57. Bei Verwendung des folgenden Codes kann ein Blob zu einem Blog Speicher Container
  58. auf dem Development Speichers hochgeladen werden. Es ist zu beachten das der
  59. Container hierfür bereits vorher erstellt worden sein muss.
  60. </para>
  61. <example id="zend.service.windowsazure.storage.blob.api.storing-blob.example">
  62. <title>Speichern eines Blobs</title>
  63. <programlisting language="php"><![CDATA[
  64. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  65. // /home/maarten/example.txt auf Azure hochladen
  66. $result = $storageClient->putBlob(
  67. 'testcontainer', 'example.txt', '/home/maarten/example.txt'
  68. );
  69. echo 'Der Name des Blobs ist: ' . $result->Name;
  70. ]]></programlisting>
  71. </example>
  72. </sect3>
  73. <sect3 id="zend.service.windowsazure.storage.blob.api.copy-blob">
  74. <title>Kopieren eines Blobs</title>
  75. <para>
  76. Bei Verwendung des folgenden Codes kann ein Blob von innerhalb des Speicher Accounts
  77. kopiert werden. Der Vorteil der Verwendung dieser Methode besteht darin das die
  78. Kopieroperation in der Azure Wolke stattfindet und kein Downloaden vom Blob
  79. stattfinden muss. Es ist zu beachten das in diesem Fall der Container bereits vorher
  80. erstellt worden sein muss.
  81. </para>
  82. <example id="zend.service.windowsazure.storage.blob.api.copy-blob.example">
  83. <title>Kopieren eines Blobs</title>
  84. <programlisting language="php"><![CDATA[
  85. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  86. // Kopiert example.txt auf example2.txt
  87. $result = $storageClient->copyBlob(
  88. 'testcontainer', 'example.txt', 'testcontainer', 'example2.txt'
  89. );
  90. echo 'Der Name des kopierten Blobs ist: ' . $result->Name;
  91. ]]></programlisting>
  92. </example>
  93. </sect3>
  94. <sect3 id="zend.service.windowsazure.storage.blob.api.download-blob">
  95. <title>Herunterladen eines Blobs</title>
  96. <para>
  97. Bei Verwendung des folgenden Codes kann ein Blob von einem Blob Speicher Container
  98. auf den Development Speicher heruntergeladen werden. Es ist zu beachten das der
  99. Container hierfür bereits vorher erstellt wurden sein und ein Blob darauf
  100. hochgeladen sein muss.
  101. </para>
  102. <example id="zend.service.windowsazure.storage.blob.api.download-blob.example">
  103. <title>Herunterladen eines Blobs</title>
  104. <programlisting language="php"><![CDATA[
  105. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  106. // Lädt die Datei /home/maarten/example.txt herunter
  107. $storageClient->getBlob(
  108. 'testcontainer', 'example.txt', '/home/maarten/example.txt'
  109. );
  110. ]]></programlisting>
  111. </example>
  112. </sect3>
  113. <sect3 id="zend.service.windowsazure.storage.blob.api.public-blob">
  114. <title>Einen Blob öffentlich verfügbar machen</title>
  115. <para>
  116. Standardmäßig sind Blob Speicher Container in Windows Azure geschützt vor
  117. öffentlichem Zugriff. Wenn ein Benutzer im Internet Zugriff auf einen Blob Container
  118. haben soll, kann seine ACL auf öffentlich (public) gesetzt werden. Es ist zu
  119. beachten dass das auf den kompletten Container angewendet wird, und nicht auf einen
  120. einzelnen Blob!
  121. </para>
  122. <para>
  123. Bei Verwendung des folgenden Codes kann die ACL eines Blob Speicher Containers auf
  124. den Development Speicher gesetzt werden. Es ist zu beachten das der Container
  125. hierfür bereits vorher erstellt worden sein muss.
  126. </para>
  127. <example id="zend.service.windowsazure.storage.blob.api.public-blob.example">
  128. <title>Einen Blob öffentlich zugänglich machen</title>
  129. <programlisting language="php"><![CDATA[
  130. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  131. // Den Container öffentlich zugänglich machen
  132. // (alle Blobs durchgehen und Blob Daten lesen)
  133. $storageClient->setContainerAcl(
  134. 'testcontainer',
  135. Zend_Service_WindowsAzure_Storage_Blob::ACL_PUBLIC_CONTAINER
  136. );
  137. ]]></programlisting>
  138. </example>
  139. </sect3>
  140. </sect2>
  141. <sect2 id="zend.service.windowsazure.storage.blob.root">
  142. <title>Stamm Container</title>
  143. <para>
  144. Der Windows Azure Blob Speicher bietet Unterstützung für die Arbeit mit einem "Stamm
  145. Container" (root). Das bedeutet das ein Blob im Stamm des Speicher Containers
  146. gespeichert werden kann, z.B.
  147. <filename>http://myaccount.blob.core.windows.net/somefile.txt</filename>.
  148. </para>
  149. <para>
  150. Um mit dem Stamm Container zu arbieten sollte er zuerst durch Verwendung der
  151. <methodname>createContainer()</methodname> Methode erstellt worden sein, und der
  152. Container sollte <varname>$root</varname> heißen. Alle anderen Operationen auf dem
  153. Stamm Container sollten ausgeführt werden indem der Containernamen auf
  154. <varname>$root</varname> gesetzt wird.
  155. </para>
  156. </sect2>
  157. <sect2 id="zend.service.windowsazure.storage.blob.wrapper">
  158. <title>Blob Speicher Stream Wrapper</title>
  159. <para>
  160. Die Windows Azure <acronym>SDK</acronym> für <acronym>PHP</acronym> bietet Unterstützung
  161. für die Registrierung eines Blob Speicher Clients als <acronym>PHP</acronym> File Stream
  162. Wrapper. Der Blob Speicher Stream Wrapper bietet Unterstützung für die Verwendung von
  163. regulären Datei Operationen auf dem Windows Azure Blob Speicher. Zum Beispiel kann eine
  164. Datei vom Windows Azure Blob Speicher aus mit der Funktion
  165. <methodname>fopen()</methodname> geöffnet werden:
  166. </para>
  167. <example id="zend.service.windowsazure.storage.blob.wrapper.sample">
  168. <title>Beispiel der Verwendung des Blob Speicher Stream Wrappers</title>
  169. <programlisting language="php"><![CDATA[
  170. $fileHandle = fopen('azure://mycontainer/myfile.txt', 'r');
  171. // ...
  172. fclose($fileHandle);
  173. ]]></programlisting>
  174. </example>
  175. <para>
  176. Um das zu tun muss die Windows Azure <acronym>SDK</acronym> für den
  177. <acronym>PHP</acronym> Blob Speicher Client als Stream Wrapper registriert werden. Das
  178. kann getan werden indem die Methode <methodname>registerStreamWrapper()</methodname>
  179. aufgerufen wird:
  180. </para>
  181. <example id="zend.service.windowsazure.storage.blob.wrapper.register">
  182. <title>Den Blob Speicher Stream Wrapper registrieren</title>
  183. <programlisting language="php"><![CDATA[
  184. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  185. // registriert azure:// auf diesem Speicher Client
  186. $storageClient->registerStreamWrapper();
  187. // oder:
  188. // registriert blob:// auf diesem Speicher Client
  189. $storageClient->registerStreamWrapper('blob://');
  190. ]]></programlisting>
  191. </example>
  192. <para>
  193. Um den Stream Wrapper zu deregistrieren kann die Methode
  194. <methodname>unregisterStreamWrapper()</methodname> verwendet werden.
  195. </para>
  196. </sect2>
  197. <sect2 id="zend.service.windowsazure.storage.blob.sharedaccesssig">
  198. <title>Shared Access Signaturen</title>
  199. <para>
  200. Der Windows Azure Bolb Speicher bietet ein Feature welches "Shared Access Signatures"
  201. genannt wird. Standardmäßig gibt es nur ein Level der Authorosierung welche in Windows
  202. Azure Blob Speicher möglich ist: entweder ist ein Container privat oder er ist
  203. öffentlich. Shared Access Signaturen bieten eine feinere Methode der Authorisierung:
  204. Lese-, Schreib-, Lösch- und Anzeigerechte können auf einem Container oder einem Blob
  205. für einen speziellen Client zugeordnet werden indem ein URL-basierendes Modell verwendet
  206. wird.
  207. </para>
  208. <para>
  209. Ein Beispiel würde die folgende Signatur sein:
  210. </para>
  211. <literallayout>
  212. http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&amp;se=2009-08-17T09%3A56%3A17Z&amp;sr=c&amp;sp=w&amp;sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D
  213. </literallayout>
  214. <para>
  215. Die obige Signatur gibt Schreibrechte auf den Container "phpazuretestshared1" des
  216. Accounts "phpstorage".
  217. </para>
  218. <sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.generate">
  219. <title>Erstellen einer Shared Access Signature</title>
  220. <para>
  221. Wenn man Eigentümer eines Windows Azure Blob Speicher Accounts ist kann man einen
  222. geteilten Zugriffsschlüssel für jeden Typ einer Ressource im eigenen Account
  223. erstellen und teilen. Um das zu tun kann die Methode
  224. <methodname>generateSharedAccessUrl()</methodname> des
  225. <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> Speicher Clients
  226. verwendet werden.
  227. </para>
  228. <para>
  229. Der folgende Beispielcode erzeugt eine Shared Access Signatur für den
  230. Schreibzugriff in einem Container der "container1" heißt, in einem Zeitrahmen von
  231. 3000 Sekunden.
  232. </para>
  233. <example id="zend.service.windowsazure.storage.blob.sharedaccesssig.generate-2">
  234. <title>Erstellung einer Shared Access Signatur für einen Container</title>
  235. <programlisting language="php"><![CDATA[
  236. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  237. $sharedAccessUrl = $storageClient->generateSharedAccessUrl(
  238. 'container1',
  239. '',
  240. 'c',
  241. 'w',
  242. $storageClient ->isoDate(time() - 500),
  243. $storageClient ->isoDate(time() + 3000)
  244. );
  245. ]]></programlisting>
  246. </example>
  247. <para>
  248. Der folgende Beispielcode erzeugt eine Shared Access Signatur für den Lesezugriff in
  249. einem Blob der <filename>test.txt</filename> heißt und einem Container der
  250. "container1" heißt, in einem Zeitrahmen von 3000 Sekunden.
  251. </para>
  252. <example id="zend.service.windowsazure.storage.blob.sharedaccesssig-generate-3">
  253. <title>Erzeugen einer Shared Access Signatur für einen Blob</title>
  254. <programlisting language="php"><![CDATA[
  255. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
  256. $sharedAccessUrl = $storageClient->generateSharedAccessUrl(
  257. 'container1',
  258. 'test.txt',
  259. 'b',
  260. 'r',
  261. $storageClient ->isoDate(time() - 500),
  262. $storageClient ->isoDate(time() + 3000)
  263. );
  264. ]]></programlisting>
  265. </example>
  266. </sect3>
  267. <sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.consume">
  268. <title>Arbeiten mit Shared Access Signaturen von anderen</title>
  269. <para>
  270. Wenn man eine Shared Access Signatur von jemandem anderen erhält kann man die
  271. Windows Azure <acronym>SDK</acronym> für <acronym>PHP</acronym> verwenden um mit der
  272. adressierten Ressource zu arbeiten. Zum Beispiel kann man die folgende Signatur vom
  273. Eigentümer eines Speicher Accounts erhalten:
  274. </para>
  275. <literallayout>
  276. http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&amp;se=2009-08-17T09%3A56%3A17Z&amp;sr=c&amp;sp=w&amp;sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D
  277. </literallayout>
  278. <para>
  279. Die obige Signatur gibt Schreibzugriff auf "phpazuretestshared1" "container" des
  280. PhpSpeicher Accounts. Da der geteilte Schlüssel für den Account nicht bekannt ist,
  281. kann die Shared Access Signatur verwendet werden um mit der authorisierten Ressource
  282. zu arbeiten.
  283. </para>
  284. <example id="zend.service.windowsazure.storage.blob.sharedaccesssig.consuming">
  285. <title>Verwenden einer Shared Access Signatur für einen Container</title>
  286. <programlisting language="php"><![CDATA[
  287. $storageClient = new Zend_Service_WindowsAzure_Storage_Blob(
  288. 'blob.core.windows.net', 'phpstorage', ''
  289. );
  290. $storageClient->setCredentials(
  291. new Zend_Service_WindowsAzure_Credentials_SharedAccessSignature()
  292. );
  293. $storageClient->getCredentials()->setPermissionSet(array(
  294. 'http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&se=2009-08-17T09%3A56%3A17Z&sr=c&sp=w&sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D'
  295. ));
  296. $storageClient->putBlob(
  297. 'phpazuretestshared1', 'NewBlob.txt', 'C:\Files\dataforazure.txt'
  298. );
  299. ]]></programlisting>
  300. </example>
  301. <para>
  302. Es ist zu beachten das es keine explizite Erlaubnis für das Schreiben eines
  303. spezifischen Blobs gab. Stattdessen hat die Windows Azure <acronym>SDK</acronym> für
  304. <acronym>PHP</acronym> festgestellt das eine Erlaubnis benötigt wurde um entweder an
  305. den spezifischen Blob zu schreiben, oder an seinen Container zu schreiben. Da nur
  306. eine Signatur für das letztere vorhanden war, hat die Windows Azure
  307. <acronym>SDK</acronym> für <acronym>PHP</acronym> diese Zugriffsrechte ausgewählt um
  308. die Anfrage auf den Windows Azure Blob Speicher durchzuführen.
  309. </para>
  310. </sect3>
  311. </sect2>
  312. </sect1>