{"id":248,"date":"2023-11-27T11:44:18","date_gmt":"2023-11-27T10:44:18","guid":{"rendered":"https:\/\/france.magicsoftware.com\/blog\/?p=248"},"modified":"2025-12-14T16:21:30","modified_gmt":"2025-12-14T15:21:30","slug":"azure-storage","status":"publish","type":"post","link":"https:\/\/france.magicsoftware.com\/blog\/magic-xpi\/azure-storage\/","title":{"rendered":"Azure Storage &#8211; Magic xpi : How to Get the Content list of a Blob Container and Download BlockBlobs locally using REST API"},"content":{"rendered":"\n<p>Goal : List a container blob storage and download and save each content (blockblob) in a file locally<\/p>\n\n\n\n<p>Describe the different steps for connecting Magic xpi with Azure Storage using REST API<\/p>\n\n\n\n<pre class=\"wp-block-verse\">1\/ Check that you can call the Azure Storage REST API using Postman with your credentials using Shared Key<\/pre>\n\n\n\n<p>(*) Instead of Shared Key, Authorization can be done with Azure Active Directory(<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/active-directory\/fundamentals\/active-directory-whatis\">Microsoft Entra ID<\/a>)<\/p>\n\n\n\n<p>For example, the URL should be in this format : <em>https:\/\/{{azure_storage_account}}.blob.core.windows.net\/devtest\/?restype=container&amp;comp=list<\/em><\/p>\n\n\n\n<p>to get the containers list<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_2-1024x654.png\" alt=\"\" class=\"wp-image-272\" style=\"width:591px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_2-1024x654.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_2-300x192.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_2-768x490.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_2.png 1253w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You need to set {{azure_storage_account}}, {{header_date}} and <strong>{{header_authorization}}<\/strong>   variables.<\/p>\n\n\n\n<p>(*) <strong><em>The main difficulty is to generate the {{header_authorization}} key that must be in the format :  SharedKey&lt;space&gt;{{AccountName}}:{{SignatureEncoded}}<\/em><\/strong><\/p>\n\n\n\n<p>example : SharedKey stmagictrfdevtest:+t5tQFW23cZ63NUZt4gQMuBUSBPSh52qa+Q5NOoFCEI=<\/p>\n\n\n\n<p>In the Postman project, you can use the Pre-request Script to set the 3 parameters below<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"891\" height=\"783\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_5.png\" alt=\"\" class=\"wp-image-285\" style=\"width:431px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_5.png 891w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_5-300x264.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_5-768x675.png 768w\" sizes=\"auto, (max-width: 891px) 100vw, 891px\" \/><\/figure>\n\n\n\n<p>You can use Microsoft Azure Storage Explorer to retrieve your azure storage account and check that you can list the content of a blob container.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"717\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_3-1024x717.png\" alt=\"\" class=\"wp-image-276\" style=\"width:555px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_3-1024x717.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_3-300x210.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_3-768x538.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_3.png 1079w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4-1024x576.png\" alt=\"\" class=\"wp-image-277\" style=\"width:567px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_4.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2\/ In other to set the <strong><em>{{header_authorization}}<\/em><\/strong> with Magic xpi, a solution is to use a <strong><em>powershell script<\/em><\/strong> that generates the signature and the header_date for the right operation (GET, PUT, LIST)<\/p>\n\n\n\n<p>Example for downloading a blob :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"649\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/01\/AZURE_STORAGE_25-1024x649.png\" alt=\"\" class=\"wp-image-550\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/01\/AZURE_STORAGE_25-1024x649.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/01\/AZURE_STORAGE_25-300x190.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/01\/AZURE_STORAGE_25-768x486.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/01\/AZURE_STORAGE_25.png 1372w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In this powershell script, we redirect the encoded signature and the header_date in the magic xpi project directory<\/p>\n\n\n\n<p><strong><em>(*) Be aware that you need to have a different signature for listing (LIST), downloading (GET) or uploading (PUT)<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_7-1024x636.png\" alt=\"\" class=\"wp-image-292\" style=\"width:600px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_7-1024x636.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_7-300x186.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_7-768x477.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_7.png 1299w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(*) Documentation reference : <a href=\"https:\/\/kb.sos-berlin.com\/display\/PKB\/Feature+Proposal+-+Azure+Blob+Storage+-+Shared+Key+Authentication#FeatureProposalAzureBlobStorageSharedKeyAuthentication-Example\">https:\/\/kb.sos-berlin.com\/display\/PKB\/Feature+Proposal+-+Azure+Blob+Storage+-+Shared+Key+Authentication#FeatureProposalAzureBlobStorageSharedKeyAuthentication-Example<\/a><\/p>\n\n\n\n<p>3\/ Use a FlowData component to update a flow variable for the AccountName<\/p>\n\n\n\n<p>4\/ Drag and Drop a FileManagement component and use Command Line method to call a bat file that will call your powershell script<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"144\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9-1024x144.png\" alt=\"\" class=\"wp-image-296\" style=\"width:560px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9-1024x144.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9-300x42.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9-768x108.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9-1536x216.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_9.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"421\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_8-1024x421.png\" alt=\"\" class=\"wp-image-295\" style=\"width:678px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_8-1024x421.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_8-300x123.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_8-768x316.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_8.png 1226w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4\/ Use a FlowData component to update 3 flow variables (F.signatureEncoded, F.Auth and F.UTCdate<\/p>\n\n\n\n<p>F.Auth will hold the <strong><em>{{header_authorization}}<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"376\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10-1024x376.png\" alt=\"\" class=\"wp-image-299\" style=\"width:838px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10-1024x376.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10-300x110.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10-768x282.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10-1536x564.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_10.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>F.SignatureEncoded<\/strong> with : UTF8FromAnsi (RepStr (RepStr (File2Blb (&lsquo;&lt;magic xpi installation directory&gt;\\Runtime\\projects\\AzureStorage2\\AzureStorage2\\signatureencoded\\token.txt&rsquo;),ASCIIChr (13),\u00a0\u00bb),ASCIIChr (10),\u00a0\u00bb))<\/p>\n\n\n\n<p><strong>F.Auth<\/strong> with : &lsquo;SharedKey &lsquo;&amp;Trim (F.AccountName)&amp;&rsquo;:&rsquo;&amp;Trim (F.SignatureEncoded)<\/p>\n\n\n\n<p><strong>F.UtCdate<\/strong> with : File2Blb (&lsquo;&lt;magic xpi installation directory&gt;\\Runtime\\projects\\AzureStorage2\\AzureStorage2\\signatureencoded\\date.txt&rsquo;)<\/p>\n\n\n\n<p>5\/ Create a REST Client Magic xpi resource to call Azure Storage (Project=&gt;Settings=&gt;Resources)<\/p>\n\n\n\n<p>Define 4 header parameters (Authorization, x-ms-date, x-ms-version, x-ms-blob-type) and 2 query parameters (restype, comp)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"311\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12-1024x311.png\" alt=\"\" class=\"wp-image-305\" style=\"width:712px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12-1024x311.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12-300x91.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12-768x234.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12-1536x467.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_12.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"212\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13-1024x212.png\" alt=\"\" class=\"wp-image-308\" style=\"width:812px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13-1024x212.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13-300x62.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13-768x159.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13-1536x318.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_13.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>6\/ Use a REST Client connector to make the call to azure storage REST API.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"473\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14-1024x473.png\" alt=\"\" class=\"wp-image-310\" style=\"width:711px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14-1024x473.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14-300x139.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14-768x355.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14-1536x710.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_14.png 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>7\/ Now you need to parse the xml result with the Datamapper component and <strong>make a loop to download each blockblob<\/strong><\/p>\n\n\n\n<p>Drag and Drop a Datamapper component and configure an XML as a source and a CallFlow as destination<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"828\" height=\"493\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_16.png\" alt=\"\" class=\"wp-image-331\" style=\"width:467px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_16.png 828w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_16-300x179.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_16-768x457.png 768w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"420\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_15-1024x420.png\" alt=\"\" class=\"wp-image-329\" style=\"width:687px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_15-1024x420.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_15-300x123.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_15-768x315.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_15.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>8\/ In the called Flow, you need to generate a signature for the desired blockblob you want to download<\/p>\n\n\n\n<p>Like in step 2\/, you can call a powershell and pass the blockblob name to generate the signature.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"658\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_17-1024x658.png\" alt=\"\" class=\"wp-image-338\" style=\"width:668px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_17-1024x658.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_17-300x193.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_17-768x494.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_17.png 1159w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>in the bat file, you call the powershell script :<\/p>\n\n\n\n<p>C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -ExecutionPolicy Bypass .\\sas2download.ps1 %1<\/p>\n\n\n\n<p>Powershell should be like this to receive the parameter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"180\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_18-1024x180.png\" alt=\"\" class=\"wp-image-340\" style=\"width:872px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_18-1024x180.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_18-300x53.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_18-768x135.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_18.png 1254w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>9\/ After getting the tokendownload.txt and the datedownload.txt, you can proceed like in step 4\/ to update the Authorization<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"680\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_19-1024x680.png\" alt=\"\" class=\"wp-image-344\" style=\"width:526px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_19-1024x680.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_19-300x199.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_19-768x510.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_19.png 1118w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>10\/ Add a path in the REST Client Magic xpi resource to call Azure Storage Download (Project=&gt;Settings=&gt;Resources)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"352\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_20-1024x352.png\" alt=\"\" class=\"wp-image-348\" style=\"width:908px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_20-1024x352.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_20-300x103.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_20-768x264.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_20.png 1211w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>11\/  Use the REST Client connector to make the call using Get operation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"625\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_21-1024x625.png\" alt=\"\" class=\"wp-image-351\" style=\"width:644px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_21-1024x625.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_21-300x183.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_21-768x469.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_21.png 1211w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"138\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_22-1024x138.png\" alt=\"\" class=\"wp-image-353\" style=\"width:635px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_22-1024x138.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_22-300x41.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_22-768x104.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_22.png 1177w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>12\/ Drag &amp; Drop Filemanagement Component to save the content on a file locally with a timestamp.<\/p>\n\n\n\n<p>Assume that the Response of the previous step (REST Client Download) goes into C.UserBlob.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_23-1024x551.png\" alt=\"\" class=\"wp-image-356\" style=\"width:630px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_23-1024x551.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_23-300x161.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_23-768x413.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_23.png 1177w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"645\" height=\"146\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_24.png\" alt=\"\" class=\"wp-image-358\" style=\"width:436px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_24.png 645w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_24-300x68.png 300w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/figure>\n\n\n\n<p>13\/ Document reference : <a href=\"https:\/\/learn.microsoft.com\/en-us\/rest\/api\/storageservices\/list-containers2?tabs=shared-key\">https:\/\/learn.microsoft.com\/en-us\/rest\/api\/storageservices\/list-containers2?tabs=shared-key<\/a><\/p>\n\n\n\n<p>Documentation reference : <a href=\"https:\/\/kb.sos-berlin.com\/display\/PKB\/Feature+Proposal+-+Azure+Blob+Storage+-+Shared+Key+Authentication#FeatureProposalAzureBlobStorageSharedKeyAuthentication-Example\">https:\/\/kb.sos-berlin.com\/display\/PKB\/Feature+Proposal+-+Azure+Blob+Storage+-+Shared+Key+Authentication#FeatureProposalAzureBlobStorageSharedKeyAuthentication-Example<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Goal : List a container blob storage and download and save each content (blockblob) in a file locally Describe the different steps for connecting Magic xpi with Azure Storage using REST API 1\/ Check that you can call the Azure Storage REST API using Postman with your credentials using Shared Key (*) Instead of Shared [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[31,93,4,28],"tags":[11,14],"class_list":["post-248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-azure-storage","category-magic-xpi","category-microsoft","tag-azure","tag-magic-xpi"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2023\/11\/AZURE_STORAGE_1.png","_links":{"self":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":16,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/248\/revisions"}],"predecessor-version":[{"id":2414,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/248\/revisions\/2414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media\/249"}],"wp:attachment":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}