Getting Started
Install
1 |
npm install azure-storage |
Usage
1 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
When using the Storage SDK, you must provide connection information for the storage account to use. This can be provided using:
- Environment variables – AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_ACCESS_KEY, or AZURE_STORAGE_CONNECTION_STRING.
- Constructors – For example,
var tableSvc = azure.createTableService(accountName, accountKey);
Blob Storage
The createContainerIfNotExists method can be used to create a container in which to store a blob:
1 2 3 4 5 6 7 8 9 10 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">createContainerIfNotExists</span><span class="pl-kos">(</span><span class="pl-s">'taskcontainer'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">publicAccessLevel</span>: <span class="pl-s">'blob'</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// if result = true, container was created.</span> <span class="pl-c">// if result = false, container already existed.</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To upload a file (assuming it is called task1-upload.txt and it is placed in the same folder as the script below), the method createBlockBlobFromLocalFile can be used.
1 2 3 4 5 6 7 8 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">createBlockBlobFromLocalFile</span><span class="pl-kos">(</span><span class="pl-s">'mycontainer'</span><span class="pl-kos">,</span> <span class="pl-s">'taskblob'</span><span class="pl-kos">,</span> <span class="pl-s">'task1-upload.txt'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// file uploaded</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
For page blobs, use createPageBlobFromLocalFile. There are other methods for uploading blobs also, such as createBlockBlobFromText or createPageBlobFromStream.
There are also several ways to download block and page blobs. For example, getBlobToStream downloads the blob to a stream:
1 2 3 4 5 6 7 |
<span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'fs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">getBlobToStream</span><span class="pl-kos">(</span><span class="pl-s">'mycontainer'</span><span class="pl-kos">,</span> <span class="pl-s">'taskblob'</span><span class="pl-kos">,</span> <span class="pl-s1">fs</span><span class="pl-kos">.</span><span class="pl-en">createWriteStream</span><span class="pl-kos">(</span><span class="pl-s">'output.txt'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// blob retrieved</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To create a Shared Access Signature (SAS), use the generateSharedAccessSignature method. Additionally you can use the date helper functions to easily create a SAS that expires at some point relative to the current time.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">startDate</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">expiryDate</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-s1">startDate</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">expiryDate</span><span class="pl-kos">.</span><span class="pl-en">setMinutes</span><span class="pl-kos">(</span><span class="pl-s1">startDate</span><span class="pl-kos">.</span><span class="pl-en">getMinutes</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">+</span> <span class="pl-c1">100</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">startDate</span><span class="pl-kos">.</span><span class="pl-en">setMinutes</span><span class="pl-kos">(</span><span class="pl-s1">startDate</span><span class="pl-kos">.</span><span class="pl-en">getMinutes</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">-</span> <span class="pl-c1">100</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">sharedAccessPolicy</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">AccessPolicy</span>: <span class="pl-kos">{</span> <span class="pl-c1">Permissions</span>: <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-c1">BlobUtilities</span><span class="pl-kos">.</span><span class="pl-c1">SharedAccessPermissions</span><span class="pl-kos">.</span><span class="pl-c1">READ</span><span class="pl-kos">,</span> <span class="pl-c1">Start</span>: <span class="pl-s1">startDate</span><span class="pl-kos">,</span> <span class="pl-c1">Expiry</span>: <span class="pl-s1">expiryDate</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">token</span> <span class="pl-c1">=</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">generateSharedAccessSignature</span><span class="pl-kos">(</span><span class="pl-s1">containerName</span><span class="pl-kos">,</span> <span class="pl-s1">blobName</span><span class="pl-kos">,</span> <span class="pl-s1">sharedAccessPolicy</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">sasUrl</span> <span class="pl-c1">=</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">getUrl</span><span class="pl-kos">(</span><span class="pl-s1">containerName</span><span class="pl-kos">,</span> <span class="pl-s1">blobName</span><span class="pl-kos">,</span> <span class="pl-s1">token</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
Table Storage
To ensure a table exists, call createTableIfNotExists:
1 2 3 4 5 6 7 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">tableService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createTableService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">tableService</span><span class="pl-kos">.</span><span class="pl-en">createTableIfNotExists</span><span class="pl-kos">(</span><span class="pl-s">'mytable'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// result contains true if created; false if already exists</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
A new entity can be added by calling insertEntity or insertOrReplaceEntity:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">tableService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createTableService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">entGen</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-c1">TableUtilities</span><span class="pl-kos">.</span><span class="pl-c1">entityGenerator</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">entity</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">PartitionKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'part2'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">RowKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'row1'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">boolValueTrue</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">Boolean</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">boolValueFalse</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">Boolean</span><span class="pl-kos">(</span><span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">intValue</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">Int32</span><span class="pl-kos">(</span><span class="pl-c1">42</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">dateValue</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">DateTime</span><span class="pl-kos">(</span><span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-v">Date</span><span class="pl-kos">.</span><span class="pl-en">UTC</span><span class="pl-kos">(</span><span class="pl-c1">2011</span><span class="pl-kos">,</span> <span class="pl-c1">10</span><span class="pl-kos">,</span> <span class="pl-c1">25</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">complexDateValue</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">DateTime</span><span class="pl-kos">(</span><span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-v">Date</span><span class="pl-kos">.</span><span class="pl-en">UTC</span><span class="pl-kos">(</span><span class="pl-c1">2013</span><span class="pl-kos">,</span> <span class="pl-c1">02</span><span class="pl-kos">,</span> <span class="pl-c1">16</span><span class="pl-kos">,</span> <span class="pl-c1">01</span><span class="pl-kos">,</span> <span class="pl-c1">46</span><span class="pl-kos">,</span> <span class="pl-c1">20</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-s1">tableService</span><span class="pl-kos">.</span><span class="pl-en">insertEntity</span><span class="pl-kos">(</span><span class="pl-s">'mytable'</span><span class="pl-kos">,</span> <span class="pl-s1">entity</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// result contains the ETag for the new entity</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
Instead of creating entities manually, you can use entityGenerator:
1 2 3 4 5 6 7 8 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">entGen</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-c1">TableUtilities</span><span class="pl-kos">.</span><span class="pl-c1">entityGenerator</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">task</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">PartitionKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'hometasks'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">RowKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'1'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">description</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'take out the trash'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">dueDate</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">DateTime</span><span class="pl-kos">(</span><span class="pl-k">new</span> <span class="pl-v">Date</span><span class="pl-kos">(</span><span class="pl-v">Date</span><span class="pl-kos">.</span><span class="pl-en">UTC</span><span class="pl-kos">(</span><span class="pl-c1">2015</span><span class="pl-kos">,</span> <span class="pl-c1">6</span><span class="pl-kos">,</span> <span class="pl-c1">20</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> |
The method retrieveEntity can then be used to fetch the entity that was just inserted:
1 2 3 4 5 6 7 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">tableService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createTableService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">tableService</span><span class="pl-kos">.</span><span class="pl-en">retrieveEntity</span><span class="pl-kos">(</span><span class="pl-s">'mytable'</span><span class="pl-kos">,</span> <span class="pl-s">'part2'</span><span class="pl-kos">,</span> <span class="pl-s">'row1'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// result contains the entity</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
The method replaceEntity or insertOrReplaceEntity can be called to update/edit an existing entry. In the following example we assume that an entity 'part2', 'row1'
with a field 'taskDone'
set to false
already exists.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">tableService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createTableService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">entity</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">PartitionKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'part2'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">RowKey</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">String</span><span class="pl-kos">(</span><span class="pl-s">'row1'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">taskDone</span>: <span class="pl-s1">entGen</span><span class="pl-kos">.</span><span class="pl-en">Boolean</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-s1">tableService</span><span class="pl-kos">.</span><span class="pl-en">insertOrReplaceEntity</span><span class="pl-kos">(</span><span class="pl-s">'mytable'</span><span class="pl-kos">,</span> <span class="pl-s1">entity</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// result contains the entity with field 'taskDone' set to `true`</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
Use TableQuery to build complex queries:
1 2 3 4 5 6 7 8 9 10 11 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">tableService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createTableService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">query</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-c1">TableQuery</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">.</span><span class="pl-en">top</span><span class="pl-kos">(</span><span class="pl-c1">5</span><span class="pl-kos">)</span> <span class="pl-kos">.</span><span class="pl-en">where</span><span class="pl-kos">(</span><span class="pl-s">'PartitionKey eq ?'</span><span class="pl-kos">,</span> <span class="pl-s">'part2'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">tableService</span><span class="pl-kos">.</span><span class="pl-en">queryEntities</span><span class="pl-kos">(</span><span class="pl-s">'mytable'</span><span class="pl-kos">,</span> <span class="pl-s1">query</span><span class="pl-kos">,</span> <span class="pl-c1">null</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// result.entries contains entities matching the query</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
Queue Storage
The createQueueIfNotExists method can be used to ensure a queue exists:
1 2 3 4 5 6 7 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">queueService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createQueueService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">queueService</span><span class="pl-kos">.</span><span class="pl-en">createQueueIfNotExists</span><span class="pl-kos">(</span><span class="pl-s">'taskqueue'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// Queue exists</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
The createMessage method can then be called to insert the message into the queue:
1 2 3 4 5 6 |
<span class="pl-k">var</span> <span class="pl-s1">queueService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createQueueService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">queueService</span><span class="pl-kos">.</span><span class="pl-en">createMessage</span><span class="pl-kos">(</span><span class="pl-s">'taskqueue'</span><span class="pl-kos">,</span> <span class="pl-s">'Hello world!'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// Message inserted</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
It is then possible to call the getMessage method, process the message and then call deleteMessage inside the callback. This two-step process ensures messages don’t get lost when they are removed from the queue.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="pl-k">var</span> <span class="pl-s1">queueService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createQueueService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s1">queueName</span> <span class="pl-c1">=</span> <span class="pl-s">'taskqueue'</span><span class="pl-kos">;</span> <span class="pl-s1">queueService</span><span class="pl-kos">.</span><span class="pl-en">getMessages</span><span class="pl-kos">(</span><span class="pl-s1">queueName</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">serverMessages</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// Process the message in less than 30 seconds, the message</span> <span class="pl-c">// text is available in serverMessages[0].messageText</span> <span class="pl-s1">queueService</span><span class="pl-kos">.</span><span class="pl-en">deleteMessage</span><span class="pl-kos">(</span><span class="pl-s1">queueName</span><span class="pl-kos">,</span> <span class="pl-s1">serverMessages</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">messageId</span><span class="pl-kos">,</span> <span class="pl-s1">serverMessages</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">popReceipt</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// Message deleted</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
File Storage
The createShareIfNotExists method can be used to create a share in which to store a file or a directory of files:
1 2 3 4 5 6 7 8 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">createShareIfNotExists</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// if result = true, share was created.</span> <span class="pl-c">// if result = false, share already existed.</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To create a directory, the method createDirectoryIfNotExists can be used.
1 2 3 4 5 6 7 8 9 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">createDirectoryIfNotExists</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-s">'taskdirectory'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// if result.created = true, share was created.</span> <span class="pl-c">// if result.created = false, share already existed.</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To upload a file (assuming it is called task1-upload.txt and it is placed in the same folder as the script below), the method createFileFromLocalFile can be used.
1 2 3 4 5 6 7 8 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">createFileFromLocalFile</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-s">'taskdirectory'</span><span class="pl-kos">,</span> <span class="pl-s">'taskfile'</span><span class="pl-kos">,</span> <span class="pl-s">'task1-upload.txt'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// file uploaded</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To upload a file from a stream, the method createFileFromStream can be used. The var myFileBuffer
in the script below is a native Node Buffer, or ArrayBuffer object if within a browser environment.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="pl-k">var</span> <span class="pl-s1">stream</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'stream'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileStream</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-s1">stream</span><span class="pl-kos">.</span><span class="pl-c1">Readable</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileStream</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s1">myFileBuffer</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileStream</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-c1">null</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">createFileFromStream</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-s">'taskdirectory'</span><span class="pl-kos">,</span> <span class="pl-s">'taskfile'</span><span class="pl-kos">,</span> <span class="pl-s1">fileStream</span><span class="pl-kos">,</span> <span class="pl-s1">myFileBuffer</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// file uploaded</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
To create a file from a text string, the method createFileFromText can be used. A Node Buffer or ArrayBuffer object containing the text can also be supplied.
1 2 3 4 5 6 7 8 9 10 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">text</span> <span class="pl-c1">=</span> <span class="pl-s">'Hello World!'</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">createFileFromText</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-s">'taskdirectory'</span><span class="pl-kos">,</span> <span class="pl-s">'taskfile'</span><span class="pl-kos">,</span> <span class="pl-s1">text</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// file created</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
There are also several ways to download files. For example, getFileToStream downloads the file to a stream:
1 2 3 4 5 6 7 |
<span class="pl-k">var</span> <span class="pl-s1">fileService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createFileService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'fs'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">fileService</span><span class="pl-kos">.</span><span class="pl-en">getFileToStream</span><span class="pl-kos">(</span><span class="pl-s">'taskshare'</span><span class="pl-kos">,</span> <span class="pl-s">'taskdirectory'</span><span class="pl-kos">,</span> <span class="pl-s">'taskfile'</span><span class="pl-kos">,</span> <span class="pl-s1">fs</span><span class="pl-kos">.</span><span class="pl-en">createWriteStream</span><span class="pl-kos">(</span><span class="pl-s">'output.txt'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// file retrieved</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
Service Properties
The getServiceProperties method can be used to fetch the logging, metrics and CORS settings on your storage account:
1 2 3 4 5 6 7 8 9 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">getServiceProperties</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">var</span> <span class="pl-s1">serviceProperties</span> <span class="pl-c1">=</span> <span class="pl-s1">result</span><span class="pl-kos">;</span> <span class="pl-c">// properties are fetched</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> |
The setServiceProperties method can be used to modify the logging, metrics and CORS settings on your storage account:
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 |
<span class="pl-k">var</span> <span class="pl-s1">azure</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'azure-storage'</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">blobService</span> <span class="pl-c1">=</span> <span class="pl-s1">azure</span><span class="pl-kos">.</span><span class="pl-en">createBlobService</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">var</span> <span class="pl-s1">serviceProperties</span> <span class="pl-c1">=</span> <span class="pl-en">generateServiceProperties</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-s1">blobService</span><span class="pl-kos">.</span><span class="pl-en">setServiceProperties</span><span class="pl-kos">(</span><span class="pl-s1">serviceProperties</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">error</span><span class="pl-kos">,</span> <span class="pl-s1">result</span><span class="pl-kos">,</span> <span class="pl-s1">response</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">error</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-c">// properties are set</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">function</span> <span class="pl-en">generateServiceProperties</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-s1">serviceProperties</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span> <span class="pl-c1">Logging</span>: <span class="pl-kos">{</span> <span class="pl-c1">Version</span>: <span class="pl-s">'1.0'</span><span class="pl-kos">,</span> <span class="pl-c1">Delete</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">Read</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">Write</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">RetentionPolicy</span>: <span class="pl-kos">{</span> <span class="pl-c1">Enabled</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">Days</span>: <span class="pl-c1">10</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">HourMetrics</span>: <span class="pl-kos">{</span> <span class="pl-c1">Version</span>: <span class="pl-s">'1.0'</span><span class="pl-kos">,</span> <span class="pl-c1">Enabled</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">IncludeAPIs</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">RetentionPolicy</span>: <span class="pl-kos">{</span> <span class="pl-c1">Enabled</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">Days</span>: <span class="pl-c1">10</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">MinuteMetrics</span>: <span class="pl-kos">{</span> <span class="pl-c1">Version</span>: <span class="pl-s">'1.0'</span><span class="pl-kos">,</span> <span class="pl-c1">Enabled</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">IncludeAPIs</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">RetentionPolicy</span>: <span class="pl-kos">{</span> <span class="pl-c1">Enabled</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">Days</span>: <span class="pl-c1">10</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">Cors</span>: <span class="pl-kos">{</span> <span class="pl-c1">CorsRule</span>: <span class="pl-kos">[</span> <span class="pl-kos">{</span> <span class="pl-c1">AllowedOrigins</span>: <span class="pl-kos">[</span><span class="pl-s">'www.azure.com'</span><span class="pl-kos">,</span> <span class="pl-s">'www.microsoft.com'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">AllowedMethods</span>: <span class="pl-kos">[</span><span class="pl-s">'GET'</span><span class="pl-kos">,</span> <span class="pl-s">'PUT'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">AllowedHeaders</span>: <span class="pl-kos">[</span><span class="pl-s">'x-ms-meta-data*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-target*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-xyz'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-foo'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">ExposedHeaders</span>: <span class="pl-kos">[</span><span class="pl-s">'x-ms-meta-data*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-source*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-abc'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-bcd'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">MaxAgeInSeconds</span>: <span class="pl-c1">500</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">AllowedOrigins</span>: <span class="pl-kos">[</span><span class="pl-s">'www.msdn.com'</span><span class="pl-kos">,</span> <span class="pl-s">'www.asp.com'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">AllowedMethods</span>: <span class="pl-kos">[</span><span class="pl-s">'GET'</span><span class="pl-kos">,</span> <span class="pl-s">'PUT'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">AllowedHeaders</span>: <span class="pl-kos">[</span><span class="pl-s">'x-ms-meta-data*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-target*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-xyz'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-foo'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">ExposedHeaders</span>: <span class="pl-kos">[</span><span class="pl-s">'x-ms-meta-data*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-source*'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-abc'</span><span class="pl-kos">,</span> <span class="pl-s">'x-ms-meta-bcd'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">MaxAgeInSeconds</span>: <span class="pl-c1">500</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span><span class="pl-kos">;</span> <span class="pl-kos">}</span> |