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:
- Sottoscrizione di Azure. Creare un account gratuito
- Registro schemi di - Azure Ecco la guida di avvio rapido per creare un gruppo del Registro schemi usando il portale di Azure.
- Python 3.7 o versione successiva - Installare Python
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 daazure-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
- Ottenere lo schema in base all'ID
- Ottenere lo schema in base alla versione
- Ottenere l'ID di uno schema
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.
Azure SDK for Python