Registres pris en charge pour les Kafka ClickPipes
- Registres compatibles avec Confluent : tout registre compatible avec l’API de Confluent Schema Registry, notamment Confluent Schema Registry lui-même et Redpanda Schema Registry. Prend en charge Avro et Protobuf.
- AWS Glue Schema Registry : pour les données Avro sérialisées avec AWS Glue SerDe, généralement à partir d’Amazon MSK.
Registres compatibles avec Confluent
Configuration
- Fournir un chemin complet vers le sujet du schéma (par ex.
https://registry.example.com/subjects/events)- Vous pouvez également faire référence à une version spécifique en ajoutant
/versions/[version]à l’URL (sinon, ClickPipes récupérera la version la plus récente).
- Vous pouvez également faire référence à une version spécifique en ajoutant
- Fournir un chemin complet vers l’ID de schéma (par ex.
https://registry.example.com/schemas/ids/1000) - Fournir l’URL racine du registre de schémas (par ex.
https://registry.example.com)
Connectivité réseau
- L’URL du registre de schémas doit utiliser
https://. - Si le hostname du registry se résout vers une adresse privée, il doit être accessible via un reverse private endpoint sélectionné pour le ClickPipe ; sinon, la vérification de connectivité lors de la configuration échouera.
Fonctionnement
- Si un ID de schéma est inclus dans la valeur de l’enregistrement, il sera utilisé pour récupérer le schéma.
- Si aucun ID de schéma n’est inclus dans la valeur de l’enregistrement, l’ID de schéma ou le nom du sujet spécifié dans la configuration du ClickPipe sera utilisé pour récupérer le schéma.
- Si la valeur de l’enregistrement est écrite sans ID de schéma inclus et qu’aucun ID de schéma ni nom du sujet n’est spécifié dans la configuration du ClickPipe, le schéma ne sera pas récupéré et le message sera ignoré, avec une
SOURCE_SCHEMA_ERRORconsignée dans la table d’erreurs de ClickPipes. - Si la valeur de l’enregistrement n’est pas conforme au schéma, il sera ignoré, avec une
DATA_PARSING_ERRORconsignée dans la table d’erreurs de ClickPipes. - Pour les schémas Protobuf uniquement : ClickPipes chargera tous les schémas importés définis comme dépendances. Les schémas Avro avec des références externes ne sont pas encore pris en charge.
_key.id sont configurées, ClickPipes résout l’ID de schéma inclus dans la clé Kafka indépendamment de la valeur de l’enregistrement. La clé peut utiliser un ID de schéma différent, mais elle doit utiliser la même famille de registres et le même format de sérialisation que la valeur. Les schémas de clé résolus sont mis en cache et les changements de schéma sont détectés automatiquement.
AWS Glue Schema Registry
AWSKafkaAvroSerializer pour un topic Amazon MSK), ClickPipes peut résoudre ces schémas directement depuis AWS Glue Schema Registry. Glue utilise un format de sérialisation et une API différents de ceux des registres compatibles avec Confluent ; sa configuration est donc distincte.
La configuration d’AWS Glue Schema Registry est actuellement disponible uniquement via la console ClickHouse Cloud. Elle n’est pas prise en charge par l’API ClickPipes ni par le Terraform provider.
Avro uniquement. Les registres AWS Glue ne sont pris en charge que pour le format Avro. SerDe Glue peut également encapsuler JSON et Protobuf, mais ces formats ne sont pas pris en charge par ClickPipes et sont refusés lors de la création du pipe.
Configuration
Aucune URL de registre n’est à configurer. Chaque enregistrement produit par le SerDe Glue contient l’ID de sa propre version de schéma, que ClickPipes résout à l’aide de
glue:GetSchemaVersion et met en cache, à raison d’un appel d’API par version de schéma distincte. L’évolution du schéma est gérée automatiquement : lorsque les enregistrements basculent vers une nouvelle version de schéma en cours de flux, celle-ci est résolue dès sa première occurrence.
Configuration IAM
Option A : réutiliser l’identité IAM du broker
- Rôle IAM : ajoutez l’instruction à la stratégie d’autorisations du rôle configuré pour MSK.
- Identifiants IAM : ajoutez l’instruction à la stratégie d’autorisations du principal IAM associé à la clé d’accès.
Option B : utiliser un rôle dédié au registre
Déploiements AWS uniquement. Cette option requiert un service ClickHouse Cloud déployé sur AWS, car elle repose sur le rôle AWS IAM du service. Si votre service s’exécute sur GCP ou Azure et que le broker n’utilise pas l’authentification IAM, vous ne pouvez pas configurer de rôle dédié au registre.
1
Obtenir l’ARN du rôle IAM du service ClickHouse
Ouvrez le service, sélectionnez l’onglet Paramètres, faites défiler jusqu’à la section Informations de sécurité réseau, puis copiez la valeur ID du rôle de service (IAM), un ARN au format
arn:aws:iam::123456789012:role/CH-S3-example-service-Role. Cette valeur est désignée ci-dessous par {ClickHouse_IAM_ARN}. Chaque service ClickHouse déployé sur AWS possède son propre rôle ; cette valeur est donc différente pour chaque service.2
Créer le rôle IAM du registre
Créez un rôle IAM dans votre compte AWS. Le nom du rôle doit commencer par Configurez la stratégie d’autorisation
ClickHouseAccessRole-.Configurez la stratégie d’approbationRemplacez {ClickHouse_IAM_ARN} par la valeur de l’étape précédente.3
Configurer le ClickPipe
Collez l’ARN du nouveau rôle dans le champ ARN du rôle IAM de l’assistant.
Portée des ressources IAM. Ces exemples suivent la stratégie AWS documentée pour les désérialiseurs ainsi que sa stratégie gérée
AWSGlueSchemaRegistryReadonlyAccess, qui accordent toutes deux l’autorisation glue:GetSchemaVersion sur "*". ClickPipes vérifie indépendamment chaque schéma résolu par rapport au nom du registre configuré et rejette les versions provenant de tout autre registre.Résolution des problèmes
Limitations
- Avro uniquement. JSON Schema et Protobuf via le SerDe Glue ne sont pas pris en charge.
- Sources Kafka uniquement. Les ClickPipes Kinesis ne peuvent pas utiliser de registry Glue.
Mappage de schéma
_key. :
- Si le schéma contient un champ qui n’est pas inclus dans le mappage de destination ClickHouse, ce champ est ignoré.
- S’il manque au schéma un champ défini dans le mappage de destination ClickHouse, la colonne ClickHouse sera renseignée avec une valeur « zéro », telle que 0 ou une chaîne vide. Notez que les expressions
DEFAULTne sont pas prises en charge. - Si le champ du schéma et la colonne ClickHouse sont incompatibles, l’insertion de cette ligne/de ce message échouera, et l’échec sera enregistré dans la table d’erreurs de ClickPipes. Notez que plusieurs conversions implicites sont prises en charge (par exemple, entre types numériques), mais pas toutes (par exemple, un champ d’enregistrement Avro ne peut pas être inséré dans une colonne ClickHouse
Int32).