Używanie tagów indeksów obiektów blob do zarządzania danymi i znajdowania ich w języku Python
W tym artykule pokazano, jak używać tagów indeksów obiektów blob do zarządzania danymi i znajdowania ich przy użyciu biblioteki klienta usługi Azure Storage dla języka Python.
Aby dowiedzieć się więcej na temat ustawiania tagów indeksu obiektów blob przy użyciu asynchronicznych interfejsów API, zobacz Asynchroniczne ustawianie tagów indeksu obiektów blob.
Wymagania wstępne
- W tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Python. Aby dowiedzieć się więcej na temat konfigurowania projektu, w tym instalacji pakietu, dodawania
import
instrukcji i tworzenia autoryzowanego obiektu klienta, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Python. - Mechanizm autoryzacji musi mieć uprawnienia do pracy z tagami indeksu obiektów blob. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następujących operacji interfejsu API REST:
Informacje o tagach indeksu obiektów blob
Tagi indeksu obiektów blob kategoryzują dane na koncie magazynu przy użyciu atrybutów tagów klucz-wartość. Te tagi są automatycznie indeksowane i uwidaczniane jako indeks wielowymiarowy z możliwością wyszukiwania w celu łatwego znajdowania danych. W tym artykule przedstawiono sposób ustawiania, pobierania i znajdowania danych przy użyciu tagów indeksu obiektów blob.
Tagi indeksu obiektów blob nie są obsługiwane dla kont magazynu z włączoną hierarchiczną przestrzenią nazw. Aby dowiedzieć się więcej o funkcji tagu indeksu obiektów blob wraz ze znanymi problemami i ograniczeniami, zobacz Zarządzanie danymi obiektów blob platformy Azure i znajdowanie ich za pomocą tagów indeksu obiektów blob.
Ustawianie tagów
Tagi indeksu można ustawić, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:
- Podmiot zabezpieczeń, któremu przypisano rolę RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniami dostępu do tagów obiektu blob (
t
uprawnienie) - Klucz konta
Aby uzyskać więcej informacji, zobacz Ustawianie tagów indeksu obiektów blob.
Tagi można ustawić przy użyciu następującej metody:
Określone tagi w tej metodzie zastąpią istniejące tagi. Jeśli stare wartości muszą być zachowane, należy je pobrać i dołączyć do wywołania tej metody. W poniższym przykładzie pokazano, jak ustawić tagi:
def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Get any existing tags for the blob if they need to be preserved
tags = blob_client.get_blob_tags()
# Add or modify tags
updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
tags.update(updated_tags)
blob_client.set_blob_tags(tags)
Wszystkie tagi można usunąć, przekazując pusty dict
obiekt do set_blob_tags
metody :
def clear_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Pass in empty dict object to clear tags
tags = dict()
blob_client.set_blob_tags(tags)
Pobieranie tagów
Tagi indeksu można uzyskać, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:
- Podmiot zabezpieczeń przypisany do roli RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniami dostępu do tagów obiektu blob (
t
uprawnienie) - Klucz konta
Aby uzyskać więcej informacji, zobacz Pobieranie i wyświetlanie listy tagów indeksów obiektów blob.
Tagi można uzyskać przy użyciu następującej metody:
W poniższym przykładzie pokazano, jak pobrać i iterować tagi obiektu blob:
def get_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
tags = blob_client.get_blob_tags()
print("Blob tags: ")
for k, v in tags.items():
print(k, v)
Filtrowanie i znajdowanie danych za pomocą tagów indeksu obiektów blob
Tagi indeksu umożliwiają znajdowanie i filtrowanie danych, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:
- Podmiot zabezpieczeń, który ma przypisaną rolę RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniem do filtrowania obiektów blob według tagów (
f
uprawnienie) - Klucz konta
Aby uzyskać więcej informacji, zobacz Znajdowanie danych przy użyciu tagów indeksu obiektów blob.
Uwaga
Nie można użyć tagów indeksu do pobrania poprzednich wersji. Tagi dla poprzednich wersji nie są przekazywane do aparatu indeksowania obiektów blob. Aby uzyskać więcej informacji, zobacz Warunki i znane problemy.
Dane można znaleźć przy użyciu następującej metody:
Poniższy przykład znajduje i wyświetla listę wszystkich obiektów blob oznaczonych jako obraz:
def find_blobs_by_tags(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
query = "\"Content\"='image'"
blob_list = container_client.find_blobs_by_tags(filter_expression=query)
print("Blobs tagged as images")
for blob in blob_list:
print(blob.name)
Asynchroniczne ustawianie tagów indeksu obiektów blob
Biblioteka klienta usługi Azure Blob Storage dla języka Python obsługuje asynchroniczną pracę z tagami indeksów obiektów blob. Aby dowiedzieć się więcej na temat wymagań dotyczących konfiguracji projektu, zobacz Programowanie asynchroniczne.
Wykonaj następujące kroki, aby ustawić tagi indeksu obiektów blob przy użyciu asynchronicznych interfejsów API:
Dodaj następujące instrukcje importowania:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
Dodaj kod, aby uruchomić program przy użyciu polecenia
asyncio.run
. Ta funkcja uruchamia przekazaną kohroutynę wmain()
naszym przykładzie i zarządza pętląasyncio
zdarzeń. Coroutines są deklarowane za pomocą składni async/await. W tym przykładziemain()
coroutine najpierw tworzy najwyższy poziomBlobServiceClient
przy użyciu metodyasync with
, a następnie wywołuje metodę ustawiającą tagi indeksu obiektów blob. Należy pamiętać, że tylko klient najwyższego poziomu musi używać programuasync with
, ponieważ inni klienci utworzoni na jego podstawie współużytkować tę samą pulę połączeń.async def main(): sample = BlobSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.set_blob_tags(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
Dodaj kod, aby ustawić tagi indeksu obiektów blob. Kod jest taki sam jak w przykładzie synchronicznym, z tą różnicą, że metoda jest zadeklarowana za pomocą słowa kluczowego
async
, aawait
słowo kluczowe jest używane podczas wywoływaniaget_blob_tags
metod iset_blob_tags
.async def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name): blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Get any existing tags for the blob if they need to be preserved tags = await blob_client.get_blob_tags() # Add or modify tags updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'} tags.update(updated_tags) await blob_client.set_blob_tags(tags)
Ta podstawowa konfiguracja umożliwia zaimplementowanie innych przykładów w tym artykule jako kohroutines przy użyciu składni async/await.
Zasoby
Aby dowiedzieć się więcej na temat używania tagów indeksu do zarządzania danymi i znajdowania ich przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Python, zobacz następujące zasoby.
Operacje interfejsu API REST
Zestaw Azure SDK dla języka Python zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, umożliwiając interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Python. Metody biblioteki klienta do zarządzania tagami indeksów obiektów blob i korzystania z nich korzystają z następujących operacji interfejsu API REST:
- Pobieranie tagów obiektów blob (interfejs API REST)
- Ustawianie tagów obiektów blob (interfejs API REST)
- Znajdowanie obiektów blob według tagów (interfejs API REST)
Przykłady kodu
- Wyświetlanie synchronicznych lub asynchronicznych przykładów kodu z tego artykułu (GitHub)