Udostępnij za pośrednictwem


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

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:

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:

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:

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:

  1. Dodaj następujące instrukcje importowania:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Dodaj kod, aby uruchomić program przy użyciu polecenia asyncio.run. Ta funkcja uruchamia przekazaną kohroutynę w main() naszym przykładzie i zarządza pętlą asyncio zdarzeń. Coroutines są deklarowane za pomocą składni async/await. W tym przykładzie main() coroutine najpierw tworzy najwyższy poziom BlobServiceClient przy użyciu metody async 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ć programu async 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())
    
  3. 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 , a await słowo kluczowe jest używane podczas wywoływania get_blob_tags metod i set_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:

Przykłady kodu

Zasoby biblioteki klienta

Zobacz też