File: Zend_Service_WindowsAzure_Blob.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (383 lines) | stat: -rw-r--r-- 16,697 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.windowsazure.storage.blob">
    <title>Zend_Service_WindowsAzure_Storage_Blob</title>

    <para>
        Blob Speicher speichert ein Set von Binären Daten. Blog Speicher bietet die folgenden drei
        Ressourcen an: den Speicher Account, Container und Blobs. Im eigenen Speicher Account bieten
        Container einen Weg um Sets von Blobs im Speicher Account zu organisieren.
    </para>

    <para>
        Blog Speicher wird von Windows Azure als <acronym>REST</acronym> <acronym>API</acronym>
        angeboten welcher von der Klasse
        <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> umhüllt ist um ein natives
        <acronym>PHP</acronym> Interface zum Speicher Account zu bieten.
    </para>

    <sect2 id="zend.service.windowsazure.storage.blob.api">
        <title>API Beispiele</title>

        <para>
            Dieser Abschnitt zeigt einige Beispiele der Verwendung der Klasse
            <classname>Zend_Service_WindowsAzure_Storage_Blob</classname>. Andere Features sind im
            Download Paket vorhanden sowie in der detailierten <acronym>API</acronym> Dokumentation
            dieser Features.
        </para>

        <sect3 id="zend.service.windowsazure.storage.blob.api.create-container">
            <title>Erstellung einer Speicher Containers</title>

            <para>
                Bei Verwendung des folgenden Codes kann ein Speicher Container auf dem Development
                Speicher erstellt werden.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.create-container.example">
                <title>Erstellung eines Speicher Containers</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
$result = $storageClient->createContainer('testcontainer');

echo 'Der Name des Containers ist: ' . $result->Name;
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.api.delete-container">
            <title>Löschen eines Speicher Containers</title>

            <para>
                Bei Verwendung des folgenden Codes kann ein Blob Speicher Container vom Development
                Speicher entfernt werden.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.delete-container.example">
                <title>Löschen eines Speicher Containers</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
$storageClient->deleteContainer('testcontainer');
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.api.storing-blob">
            <title>Speichern eines Blobs</title>

            <para>
                Bei Verwendung des folgenden Codes kann ein Blob zu einem Blog Speicher Container
                auf dem Development Speichers hochgeladen werden. Es ist zu beachten das der
                Container hierfür bereits vorher erstellt worden sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.storing-blob.example">
                <title>Speichern eines Blobs</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();

// /home/maarten/example.txt auf Azure hochladen
$result = $storageClient->putBlob(
    'testcontainer', 'example.txt', '/home/maarten/example.txt'
);

echo 'Der Name des Blobs ist: ' . $result->Name;
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.api.copy-blob">
            <title>Kopieren eines Blobs</title>

            <para>
                Bei Verwendung des folgenden Codes kann ein Blob von innerhalb des Speicher Accounts
                kopiert werden. Der Vorteil der Verwendung dieser Methode besteht darin das die
                Kopieroperation in der Azure Wolke stattfindet und kein Downloaden vom Blob
                stattfinden muss. Es ist zu beachten das in diesem Fall der Container bereits vorher
                erstellt worden sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.copy-blob.example">
                <title>Kopieren eines Blobs</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();

// Kopiert example.txt auf example2.txt
$result = $storageClient->copyBlob(
    'testcontainer', 'example.txt', 'testcontainer', 'example2.txt'
);

echo 'Der Name des kopierten Blobs ist: ' . $result->Name;
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.api.download-blob">
            <title>Herunterladen eines Blobs</title>

            <para>
                Bei Verwendung des folgenden Codes kann ein Blob von einem Blob Speicher Container
                auf den Development Speicher heruntergeladen werden. Es ist zu beachten das der
                Container hierfür bereits vorher erstellt wurden sein und ein Blob darauf
                hochgeladen sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.download-blob.example">
                <title>Herunterladen eines Blobs</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();

// Lädt die Datei /home/maarten/example.txt herunter
$storageClient->getBlob(
    'testcontainer', 'example.txt', '/home/maarten/example.txt'
);
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.api.public-blob">
            <title>Einen Blob öffentlich verfügbar machen</title>

            <para>
                Standardmäßig sind Blob Speicher Container in Windows Azure geschützt vor
                öffentlichem Zugriff. Wenn ein Benutzer im Internet Zugriff auf einen Blob Container
                haben soll, kann seine ACL auf öffentlich (public) gesetzt werden. Es ist zu
                beachten dass das auf den kompletten Container angewendet wird, und nicht auf einen
                einzelnen Blob!
            </para>

            <para>
                Bei Verwendung des folgenden Codes kann die ACL eines Blob Speicher Containers auf
                den Development Speicher gesetzt werden. Es ist zu beachten das der Container
                hierfür bereits vorher erstellt worden sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.blob.api.public-blob.example">
                <title>Einen Blob öffentlich zugänglich machen</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();

// Den Container öffentlich zugänglich machen
// (alle Blobs durchgehen und Blob Daten lesen)
$storageClient->setContainerAcl(
    'testcontainer',
    Zend_Service_WindowsAzure_Storage_Blob::ACL_PUBLIC_CONTAINER
);
]]></programlisting>
            </example>
        </sect3>
    </sect2>

    <sect2 id="zend.service.windowsazure.storage.blob.root">
        <title>Stamm Container</title>

        <para>
            Der Windows Azure Blob Speicher bietet Unterstützung für die Arbeit mit einem "Stamm
            Container" (root). Das bedeutet das ein Blob im Stamm des Speicher Containers
            gespeichert werden kann, z.B.
            <filename>http://myaccount.blob.core.windows.net/somefile.txt</filename>.
        </para>

        <para>
            Um mit dem Stamm Container zu arbieten sollte er zuerst durch Verwendung der
            <methodname>createContainer()</methodname> Methode erstellt worden sein, und der
            Container sollte <varname>$root</varname> heißen. Alle anderen Operationen auf dem
            Stamm Container sollten ausgeführt werden indem der Containernamen auf
            <varname>$root</varname> gesetzt wird.
        </para>
    </sect2>

    <sect2 id="zend.service.windowsazure.storage.blob.wrapper">
        <title>Blob Speicher Stream Wrapper</title>

        <para>
            Die Windows Azure <acronym>SDK</acronym> für <acronym>PHP</acronym> bietet Unterstützung
            für die Registrierung eines Blob Speicher Clients als <acronym>PHP</acronym> File Stream
            Wrapper. Der Blob Speicher Stream Wrapper bietet Unterstützung für die Verwendung von
            regulären Datei Operationen auf dem Windows Azure Blob Speicher. Zum Beispiel kann eine
            Datei vom Windows Azure Blob Speicher aus mit der Funktion
            <methodname>fopen()</methodname> geöffnet werden:
        </para>

        <example id="zend.service.windowsazure.storage.blob.wrapper.sample">
            <title>Beispiel der Verwendung des Blob Speicher Stream Wrappers</title>

            <programlisting language="php"><![CDATA[
$fileHandle = fopen('azure://mycontainer/myfile.txt', 'r');

// ...

fclose($fileHandle);
]]></programlisting>
        </example>

        <para>
            Um das zu tun muss die Windows Azure <acronym>SDK</acronym> für den
            <acronym>PHP</acronym> Blob Speicher Client als Stream Wrapper registriert werden. Das
            kann getan werden indem die Methode <methodname>registerStreamWrapper()</methodname>
            aufgerufen wird:
        </para>

        <example id="zend.service.windowsazure.storage.blob.wrapper.register">
            <title>Den Blob Speicher Stream Wrapper registrieren</title>

            <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
// registriert azure:// auf diesem Speicher Client
$storageClient->registerStreamWrapper();

// oder:

// registriert blob:// auf diesem Speicher Client
$storageClient->registerStreamWrapper('blob://');
]]></programlisting>
        </example>

        <para>
            Um den Stream Wrapper zu deregistrieren kann die Methode
            <methodname>unregisterStreamWrapper()</methodname> verwendet werden.
        </para>
    </sect2>

    <sect2 id="zend.service.windowsazure.storage.blob.sharedaccesssig">
        <title>Shared Access Signaturen</title>

        <para>
            Der Windows Azure Bolb Speicher bietet ein Feature welches "Shared Access Signatures"
            genannt wird. Standardmäßig gibt es nur ein Level der Authorosierung welche in Windows
            Azure Blob Speicher möglich ist: entweder ist ein Container privat oder er ist
            öffentlich. Shared Access Signaturen bieten eine feinere Methode der Authorisierung:
            Lese-, Schreib-, Lösch- und Anzeigerechte können auf einem Container oder einem Blob
            für einen speziellen Client zugeordnet werden indem ein URL-basierendes Modell verwendet
            wird.
        </para>

        <para>
            Ein Beispiel würde die folgende Signatur sein:
        </para>

        <literallayout>
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
        </literallayout>

        <para>
            Die obige Signatur gibt Schreibrechte auf den Container "phpazuretestshared1" des
            Accounts "phpstorage".
        </para>

        <sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.generate">
            <title>Erstellen einer Shared Access Signature</title>

            <para>
                Wenn man Eigentümer eines Windows Azure Blob Speicher Accounts ist kann man einen
                geteilten Zugriffsschlüssel für jeden Typ einer Ressource im eigenen Account
                erstellen und teilen. Um das zu tun kann die Methode
                <methodname>generateSharedAccessUrl()</methodname> des
                <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> Speicher Clients
                verwendet werden.
            </para>

            <para>
                Der folgende Beispielcode erzeugt eine Shared Access Signatur für den
                Schreibzugriff in einem Container der "container1" heißt, in einem Zeitrahmen von
                3000 Sekunden.
            </para>

            <example id="zend.service.windowsazure.storage.blob.sharedaccesssig.generate-2">
                <title>Erstellung einer Shared Access Signatur für einen Container</title>

                <programlisting language="php"><![CDATA[
$storageClient   = new Zend_Service_WindowsAzure_Storage_Blob();
$sharedAccessUrl = $storageClient->generateSharedAccessUrl(
    'container1',
    '',
    'c',
    'w',
    $storageClient ->isoDate(time() - 500),
    $storageClient ->isoDate(time() + 3000)
);
]]></programlisting>
            </example>

            <para>
                Der folgende Beispielcode erzeugt eine Shared Access Signatur für den Lesezugriff in
                einem Blob der <filename>test.txt</filename> heißt und einem Container der
                "container1" heißt, in einem Zeitrahmen von 3000 Sekunden.
            </para>

            <example id="zend.service.windowsazure.storage.blob.sharedaccesssig-generate-3">
                <title>Erzeugen einer Shared Access Signatur für einen Blob</title>

                <programlisting language="php"><![CDATA[
$storageClient   = new Zend_Service_WindowsAzure_Storage_Blob();
$sharedAccessUrl = $storageClient->generateSharedAccessUrl(
    'container1',
    'test.txt',
    'b',
    'r',
    $storageClient ->isoDate(time() - 500),
    $storageClient ->isoDate(time() + 3000)
);
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.consume">
            <title>Arbeiten mit Shared Access Signaturen von anderen</title>

            <para>
                Wenn  man eine Shared Access Signatur von jemandem anderen erhält kann man die
                Windows Azure <acronym>SDK</acronym> für <acronym>PHP</acronym> verwenden um mit der
                adressierten Ressource zu arbeiten. Zum Beispiel kann man die folgende Signatur vom
                Eigentümer eines Speicher Accounts erhalten:
            </para>

            <literallayout>
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
            </literallayout>

            <para>
                Die obige Signatur gibt Schreibzugriff auf "phpazuretestshared1" "container" des
                PhpSpeicher Accounts. Da der geteilte Schlüssel für den Account nicht bekannt ist,
                kann die Shared Access Signatur verwendet werden um mit der authorisierten Ressource
                zu arbeiten.
            </para>

            <example id="zend.service.windowsazure.storage.blob.sharedaccesssig.consuming">
                <title>Verwenden einer Shared Access Signatur für einen Container</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob(
    'blob.core.windows.net', 'phpstorage', ''
);
$storageClient->setCredentials(
    new Zend_Service_WindowsAzure_Credentials_SharedAccessSignature()
);
$storageClient->getCredentials()->setPermissionSet(array(
    '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'
));
$storageClient->putBlob(
    'phpazuretestshared1', 'NewBlob.txt', 'C:\Files\dataforazure.txt'
);
]]></programlisting>
            </example>

            <para>
                Es ist zu beachten das es keine explizite Erlaubnis für das Schreiben eines
                spezifischen Blobs gab. Stattdessen hat die Windows Azure <acronym>SDK</acronym> für
                <acronym>PHP</acronym> festgestellt das eine Erlaubnis benötigt wurde um entweder an
                den spezifischen Blob zu schreiben, oder an seinen Container zu schreiben. Da nur
                eine Signatur für das letztere vorhanden war, hat die Windows Azure
                <acronym>SDK</acronym> für <acronym>PHP</acronym> diese Zugriffsrechte ausgewählt um
                die Anfrage auf den Windows Azure Blob Speicher durchzuführen.
            </para>
        </sect3>
    </sect2>
</sect1>