Biblioteca cliente do Registo Azure Schema para Python - versão 1.2.0
Azure Schema Registry é um serviço de repositório de esquemas hospedado por Hubs de Eventos do Azure, fornecendo armazenamento de esquemas, versão e gestão. O registo é alavancado por serializers para reduzir o tamanho da carga útil, enquanto descreve a estrutura da carga útil com identificadores de esquemas em vez de esquemas completos.
Código fonte | Pacote (PyPi) | Documentação de | referência da API Amostras | Alterlog
Exclusão de Responsabilidade
O apoio aos pacotes Azure SDK Python para python 2.7 terminou em 01 de janeiro de 2022. Para mais informações e perguntas, consulte https://github.com/Azure/azure-sdk-for-python/issues/20691
Introdução
Instale o pacote
Instale a biblioteca de clientes do Registo Azure Schema para Python com pip:
pip install azure-schemaregistry
Pré-requisitos:
Para utilizar este pacote, você deve ter:
- Subscrição do Azure - Criar uma conta gratuita
- Registo - Azure SchemaAqui está o guia de arranque rápido para criar um grupo de registo de Schema usando o portal do Azure.
- Python 3.7 ou mais tarde - Instalar Python
Autenticar o cliente
A interação com o Registo de Schema começa com uma instância da classe SchemaRegistryClient. O construtor cliente tem o espaço de nome totalmente qualificado e uma credencial Azure Ative Directory:
O espaço de nome totalmente qualificado da instância do registo de Schema deve seguir o formato:
<yournamespace>.servicebus.windows.net
.Uma credencial AAD que implementa o protocolo TokenCredential deve ser passada ao construtor. Existem implementações do
TokenCredential
protocolo disponível no pacote de identidade azul. Para utilizar os tipos de credenciais fornecidos por, porazure-identity
favor instale a biblioteca cliente Azure Identity para Python com pip:
pip install azure-identity
- Além disso, para utilizar a API assínc, deve primeiro instalar um transporte de async, como aiohttp:
pip install aiohttp
Criar cliente utilizando a biblioteca de identidade azul:
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)
Conceitos-chave
Schema: Schema é a organização ou estrutura para dados. Informações mais detalhadas podem ser encontradas aqui.
Grupo Schema: Um grupo lógico de esquemas semelhantes baseados em critérios de negócio, que podem conter várias versões de um esquema. Informações mais detalhadas podem ser encontradas aqui.
SchemaRegistryClient:
SchemaRegistryClient
fornece a API para armazenar e recuperar esquemas no registo de esquemas.
Exemplos
As seguintes secções fornecem vários fragmentos de código que cobrem algumas das tarefas mais comuns do Registo de Schema, incluindo:
Registar um esquema
Utilize SchemaRegistryClient.register_schema
o método para registar um esquema.
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
Obter o esquema por id
Obtenha a definição de esquema e as suas propriedades por identificação de esquema.
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
Obtenha o esquema por versão
Obtenha a definição de esquema e as suas propriedades por versão de esquema.
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
Obter o id de um esquema
Obtenha o esquema de um esquema por definição de esquema e suas propriedades.
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
Resolução de problemas
Geral
Os clientes do Registo De Schema levantam exceções definidas no Azure Core.
Registo
Esta biblioteca utiliza a biblioteca de registos padrão para registar registos. Informações básicas sobre sessões HTTP (URLs, cabeçalhos, etc.) são registadas ao nível info.
A registo detalhado do nível DEBUG, incluindo os órgãos de pedido/resposta e os cabeçalhos não redigidos, pode ser ativado num cliente com o logging_enable
argumento:
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)
Da mesma forma, logging_enable
pode permitir a registo detalhado para uma única operação, mesmo quando não está habilitado para o cliente:
schema_registry_client.get_schema(schema_id, logging_enable=True)
Passos seguintes
Mais código de amostra
Por favor, dê uma olhada no diretório de amostras para exemplos detalhados de como usar esta biblioteca para registar e recuperar esquemas de/para o Registo de Schema.
Contribuir
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para mais informações consulte o Código de Conduta FAQ ou contacte opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.
Azure SDK for Python