Záznam ze Vzdělávacího okénka HAVIT z 9. května 2019, kde Jiří Kanda povídal o Azure Blob Storage a Azure CDN (Content Delivery Network).
Tag Archives: Azure Storage
Vývoj cloudových aplikací – 04 Azure Storage, Blobs, Queues [MFF UK NSWI152, LS 2018]
Záznam z čtvrté vyučovací hodiny (13. března 2018) semináře Vývoj cloudových aplikací (NSWI152) pro MMF UK v letním semestru 2017/2018. Je publikován na našem HAVIT YouTube Channelu.
Dotčená témata
- Azure Storage Account
- Azure Storage – Blobs
- Azure Storage – Queues
Záznam je v angličtině. Ukázalo se, že na hodinu přišlo více zahraničních studentů než českých, tak jsme se domluvili takto.
Instrukce k labům jsou k dispozici na GitHubu – LAB4 + LAB5.
Azure: Ověření existence blobu, pokud mám jeho URI
Pokud máte pouze storage account (CloudBlobClient) a URI blobu v něm, není úplně jednoduché existenci blobu ověřit. Přesněji řečeno při touze použít obvyklou metodu ICloudBlob.Exists(), musíte mít na daný blob referenci. Pro její získání z URI je tu metoda CloudBlobClient.GetBlobReferenceFromServer(Uri blobUri), která však při svém zavolání dělá HEAD request na blob a snaží se dotáhnout jeho metadata. Pokud blob neexistuje, vyhodí už tato metoda výjimku a na nějaké Exists() se už ani nedostane.
Výjimku lze zachytit s pěkným pattern-matchingem:
ICloudBlob blob;
try
{
blob = blobClient.GetBlobReferenceFromServer(new Uri(url));
}
catch (Microsoft.WindowsAzure.Storage.StorageException ex)
when ((ex.InnerException is System.Net.WebException wex)
&& (wex.Response is System.Net.HttpWebResponse httpWebResponse)
&& (httpWebResponse.StatusCode == System.Net.HttpStatusCode.NotFound))
{
// blob does not exist, do whatever you need here
return null;
}
// further code able to use the blob-reference
Pokud s referencí na blob nepotřebujete dále pracovat, tak samozřejmě můžete jeho existenci ověřit vlastním jednoduchým HTTP HEAD requestem z libovolného HTTP klienta.
Každopádně je zde obskurní už to, že máte na daný blob pouze plné URL. Za příčetných okolností byste měli mít k dispozici strukturovanou informaci o názvu containeru a blobu v něm, což by šlo samozřejmě z URL i vyparsovat.