Wprowadzenie
Jest to usługa dedykowana do przechowywania danych tekstowych i binarnych.
Krótko mówiąc, działanie Blob Storage jest zbliżone do serwisu OneDrive, choć oferuje znacznie więcej funkcjonalności.
Po przesłaniu danych otrzymujemy link do zasobu, więc aby go pobrać, wystarczy nam przeglądarka. Można to również zrobić z poziomu kodu.
Hierarchia zasobów
Obiekty blob służą do przechowywania naszych zasobów. Mają swoją nazwę i właściwości.
Kontenery pełnią funkcję folderu dla naszych obiektów blob. Kontenery natomiast są trzymane w ramach tzw. konta magazynu.
Konto magazynu to zasób Blob Storage, który tworzymy w portalu Azure.
Typy zasobów
Obiekty blob to nasze pojedyncze zasoby, mogą mieć jeden z trzech typów:
- Block blobs
Dane składają się z bloków danych, jest to dobry wybór do przechowywania plików zdjęć, dokumentów i filmów, zapewnia wsparcie dla równoległego pobierania danych. - Append blobs
Podobne do block blobs, ale zoptymalizowane pod równoległe dopisywanie nowych danych, nadpisanie starych danych nie jest możliwe. Nadają się do przechowywania logów. - Page blobs
Stanowią zbiór stron po 512 bajtów, zoptymalizowane pod losowy odczyt/zapis.
Tworzenie konta magazynu Blob Storage
Przed rozpoczęciem pracy trzeba utworzyć w Azure nowy zasób o nazwie Storage account – blob, file, table, queue
Będzie on naszym kontem magazynu.
Jego nazwa ma pewne ograniczenia, gdyż stanowi część adresu URL do zasobu.
W skrócie: tylko małe litery lub cyfry, od 3 do 24 znaków.
Wymagane ustawienia:
- Account Kind na Blob storage
- Secure transfer required na true (wymusza komunikację poprzez HTPPS)
Ustawienia opcjonalne (dzięki temu zaoszczędzimy pieniążki):
- Replication na Locally-redundant storage (LRS),
- Performance na Standard
- Access tier na Cool
Tworzenie kontenera
Tutaj również są ograniczenia dla nazwy.
W skrócie: tylko małe litery, cyfry lub myślnik, od 3 do 63 znaków.
Oprócz nazwy możemy ustawić opcję Public access level. Tutaj ustawiamy typ Private (no anonymous access).
To oznacza, że zasoby domyślnie są niedostępne dla osób z zewnątrz.
Dostęp anonimowy można nadać poprzez użycie mechanizmu Shared Access Signature, o czym będzie później.
Uwierzytelnianie / autoryzacja
Zarządzanie zasobami w Blob Storage z poziomu kodu wymaga uwierzytelnienia, które możemy przeprowadzić na 2 sposoby.
Access key
Można go pobrać z zakładki Access keys w Storage account. Do dyspozycji mamy 2 klucze. Do zarządzania zasobami z poziomu kodu potrzebujemy wartości z pola Connection string. Klucze te traktujemy jak hasło administratora – rozporządzajmy nimi ostrożnie. Jeśli mamy podejrzenia, że trafiły w niepowołane ręce, powinniśmy wygenerować nowe. Po wygenerowaniu nowych kluczy stare stają się bezużyteczne.
Shared Acess Signature
Drugi sposób to użycie klucza Shared Access Signature (SAS). Jest to token, który dołączamy do oryginalnego adresu zasobu. Posiadając tak skonstruowany link otrzymujemy dostęp do zasobu. Podczas generowania tokenu SAS możemy określić jakie prawa przysługują osobie posiadającej link (odczyt, usuwanie itp.) oraz podać termin jego wygaśnięcia. Na przykład, można wygenerować token, który zezwala na odczyt danego zasobu przez najbliższe 2 godziny, po tym czasie stanie się bezużyteczny. Użycie tokenów SAS pozwala na lepszą granulację uprawnień, lecz do jego generowania wymagane jest użycie Access key. Jeśli ten zostanie zmieniony, tokeny SAS również muszą zostać wygenerowane na nowo.
Token SAS można wygenerować w portalu Azure oraz z poziomu kodu.
Metadane
Do każdego objektu blob oprócz nazwy można przypisać dodatkowe informacje. Są przechowywane w postaci kolekcji typu klucz-wartość. Na przykład, do pliku zawierającego list przewozowy można dodać informacje zawierające nr zamówienia, czas utworzenia pliku itp. Może okazać się przydatne podczas przeszukiwania konterera z poziomu kodu.
Więcej informacji można uzyskać pod adresem
https://docs.microsoft.com/pl-pl/azure/storage/blobs/storage-blobs-introduction