Condividi tramite


Libreria client del Registro schemi di Azure per Python - versione 1.2.0

Registro schemi di Azure è un servizio di repository di schemi ospitato da Hub eventi di Azure, che fornisce archiviazione dello schema, controllo delle versioni e gestione. Il Registro di sistema viene sfruttato dai serializzatori per ridurre le dimensioni del payload durante la descrizione della struttura del payload con identificatori di schema anziché schemi completi.

Codice | sorgente Pacchetto (PyPi) | Documentazione | di riferimento sulle APICampioni | Changelog

Dichiarazione di non responsabilità

Il supporto dei pacchetti Python di Azure SDK per Python 2.7 è terminato il 01 gennaio 2022. Per altre informazioni e domande, fare riferimento a https://github.com/Azure/azure-sdk-for-python/issues/20691

Introduzione

Installare il pacchetto

Installare la libreria client del Registro schemi di Azure per Python con pip:

pip install azure-schemaregistry

Prerequisiti:

Per usare questo pacchetto, è necessario disporre di:

Autenticare il client

L'interazione con registro schemi inizia con un'istanza della classe SchemaRegistryClient. Il costruttore client accetta lo spazio dei nomi completo e le credenziali di Azure Active Directory:

  • Lo spazio dei nomi completo dell'istanza del Registro schemi deve seguire il formato : <yournamespace>.servicebus.windows.net.

  • Una credenziale di AAD che implementa il protocollo TokenCredential deve essere passata al costruttore. Nel pacchetto azure-identity sono disponibili implementazioni del TokenCredential protocollo. Per usare i tipi di credenziali forniti da azure-identity, installare la libreria client di Identità di Azure per Python con pip:

pip install azure-identity
  • Inoltre, per usare l'API asincrona, è prima necessario installare un trasporto asincrono, ad esempio aiohttp:
pip install aiohttp

Creare un client usando la libreria azure-identity:

from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/'
fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential)

Concetti chiave

  • Schema: lo schema è l'organizzazione o la struttura per i dati. Altre informazioni dettagliate sono disponibili qui.

  • Gruppo di schemi: un gruppo logico di schemi simili in base ai criteri aziendali, che possono contenere più versioni di uno schema. Altre informazioni dettagliate sono disponibili qui.

  • SchemaRegistryClient: SchemaRegistryClient fornisce l'API per l'archiviazione e il recupero di schemi nel Registro di sistema dello schema.

Esempio

Le sezioni seguenti forniscono diversi frammenti di codice che illustrano alcune delle attività più comuni del Registro schemi, tra cui:

Registrare uno schema

Usare il SchemaRegistryClient.register_schema metodo per registrare uno schema.

import os

from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient

token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
"""

schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
    schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
    id = schema_properties.id

Ottenere lo schema in base all'ID

Ottenere la definizione dello schema e le relative proprietà in base all'ID dello schema.

import os

from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient

token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
schema_id = 'your-schema-id'

schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
    schema = schema_registry_client.get_schema(schema_id)
    definition = schema.definition
    properties = schema.properties

Ottenere lo schema in base alla versione

Ottenere la definizione dello schema e le relative proprietà in base alla versione dello schema.

import os

from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient

token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ["SCHEMAREGISTRY_GROUP"]
name = "your-schema-name"
version = int("<your schema version>")

schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
    schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version)
    definition = schema.definition
    properties = schema.properties

Ottenere l'ID di uno schema

Ottenere l'ID dello schema di uno schema per definizione dello schema e le relative proprietà.

import os

from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient

token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
"""

schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
    schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
    id = schema_properties.id

Risoluzione dei problemi

Generale

I client del Registro di sistema dello schema generano eccezioni definite in Azure Core.

Registrazione

Questa libreria usa la libreria di registrazione standard per la registrazione. Le informazioni di base sulle sessioni HTTP (URL, intestazioni e così via) vengono registrate a livello di INFO.

La registrazione dettagliata a livello di DEBUG, inclusi i corpi di richiesta/risposta e le intestazioni non contrassegnate, può essere abilitata in un client con l'argomento logging_enable :

import sys
import logging
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential

# Create a logger for the SDK
logger = logging.getLogger('azure.schemaregistry')
logger.setLevel(logging.DEBUG)

# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True)

Analogamente, logging_enable può abilitare la registrazione dettagliata per una singola operazione, anche quando non è abilitata per il client:

schema_registry_client.get_schema(schema_id, logging_enable=True)

Passaggi successivi

Altro codice di esempio

Esaminare la directory samples per esempi dettagliati su come usare questa libreria per registrare e recuperare lo schema da e verso Registro schemi.

Contributo

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.

Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.