Поддерживаемые реестры схем для Kafka ClickPipes
- Реестры, совместимые с Confluent: любые реестры, API которых совместим с Confluent Schema Registry, включая сам Confluent Schema Registry и Redpanda Schema Registry. Поддерживаются Avro и Protobuf.
- AWS Glue Schema Registry: для данных Avro, сериализованных с помощью AWS Glue SerDe, обычно поступающих из Amazon MSK.
Реестры, совместимые с Confluent
Конфигурация
- Укажите полный путь к subject схемы (например,
https://registry.example.com/subjects/events)- При необходимости можно указать конкретную версию, добавив
/versions/[version]к URL (в противном случае ClickPipes получит последнюю версию).
- При необходимости можно указать конкретную версию, добавив
- Укажите полный путь к ID схемы (например,
https://registry.example.com/schemas/ids/1000) - Укажите корневой URL реестра схем (например,
https://registry.example.com)
Сетевое подключение
- URL реестра схем должен использовать
https://. - Если имя хоста реестра разрешается в частный адрес, он должен быть доступен через обратную частную конечную точку, выбранную для ClickPipe; в противном случае проверка подключения на этапе настройки завершится ошибкой.
Как это работает
- Если в сообщении есть встроенный ID схемы, он будет использован для получения схемы.
- Если в сообщении нет встроенного ID схемы, для получения схемы будет использован ID схемы или имя subject, указанные в конфигурации ClickPipe.
- Если сообщение записано без встроенного ID схемы и в конфигурации ClickPipe не указан ни ID схемы, ни имя subject, схема не будет получена, а сообщение будет пропущено; в таблицу ошибок ClickPipes будет записана ошибка
SOURCE_SCHEMA_ERROR. - Если сообщение не соответствует схеме, оно будет пропущено; в таблицу ошибок ClickPipes будет записана ошибка
DATA_PARSING_ERROR. - Только для схем Protobuf: ClickPipes загрузит все импортированные схемы, указанные как зависимости. Схемы Avro с внешними ссылками пока не поддерживаются.
AWS Glue Schema Registry
AWSKafkaAvroSerializer для топика Amazon MSK), ClickPipes может получать эти схемы непосредственно из AWS Glue Schema Registry. Glue использует другой формат передачи данных и другой API, чем реестры, совместимые с Confluent, поэтому настраивается отдельно.
Настройка AWS Glue Schema Registry в настоящее время доступна только в консоли ClickHouse Cloud. Через API ClickPipes или Terraform-провайдер она не поддерживается.
Только Avro. Реестры AWS Glue поддерживаются только для формата Avro. Glue SerDe также может формировать JSON и Protobuf, но ClickPipes их не поддерживает и отклоняет при создании пайпа.
Конфигурация
URL реестра настраивать не требуется. Каждая запись, созданная Glue SerDe, содержит идентификатор своей версии схемы, который ClickPipes получает с помощью
glue:GetSchemaVersion и кэширует; для каждой уникальной версии схемы выполняется один вызов API. Изменение схемы обрабатывается автоматически: если записи в потоке переключаются на новую версию схемы, она будет получена при первом обращении.
Настройка IAM
Вариант A: использовать IAM-идентичность брокера
- Роль IAM: Добавьте оператор в политику разрешений роли, настроенной для MSK.
- Учетные данные IAM: Добавьте оператор в политику разрешений субъекта IAM, связанного с ключом доступа.
Вариант B: использование отдельной роли для реестра
Только для развертываний в AWS. Для этого варианта требуется сервис ClickHouse Cloud, развернутый в AWS, поскольку он использует роль AWS IAM сервиса. Если ваш сервис работает в GCP или Azure, а брокер не использует аутентификацию IAM, настроить отдельную роль для реестра не получится.
1
Получите ARN роли IAM сервиса ClickHouse
Откройте сервис, перейдите на вкладку Settings, прокрутите до раздела Network security information и скопируйте значение Service role ID (IAM) — ARN вида
arn:aws:iam::123456789012:role/CH-S3-example-service-Role. Далее оно обозначается как {ClickHouse_IAM_ARN}. У каждого сервиса ClickHouse, развернутого в AWS, есть собственная роль, поэтому это значение отличается для каждого сервиса.2
Создайте роль IAM для реестра
Создайте роль IAM в своем аккаунте AWS. Имя роли должно начинаться с Настройте политику разрешений
ClickHouseAccessRole-.Настройте политику доверияЗамените {ClickHouse_IAM_ARN} значением из предыдущего шага.3
Настройте ClickPipe
Вставьте ARN новой роли в поле ARN роли IAM мастера.
Область действия IAM-ресурсов. Эти примеры соответствуют документированной AWS политике для десериализаторов и ее управляемой политике
AWSGlueSchemaRegistryReadonlyAccess, обе из которых предоставляют разрешение glue:GetSchemaVersion для "*". ClickPipes независимо проверяет каждую разрешенную схему на соответствие настроенному вами Имя реестра и отклоняет версии из любых других реестров.Устранение неполадок
Ограничения
- Поддерживается только Avro. JSON Schema и Protobuf через Glue SerDe не поддерживаются.
- Поддерживаются только источники Kafka. ClickPipes для Kinesis не могут использовать реестр Glue.
Сопоставление схемы
- Если схема содержит поле, которое отсутствует в сопоставлении с целевой таблицей ClickHouse, это поле игнорируется.
- Если в схеме отсутствует поле, определённое в сопоставлении с целевой таблицей ClickHouse, соответствующий столбец ClickHouse будет заполнен “нулевым” значением, например 0 или пустой строкой. Обратите внимание, что выражения
DEFAULTне поддерживаются. - Если поле схемы и столбец ClickHouse несовместимы, вставка этой строки/сообщения завершится ошибкой, и ошибка будет записана в таблицу ошибок ClickPipes. Обратите внимание, что поддерживаются некоторые неявные преобразования (например, между числовыми типами), но не все (например, поле записи Avro нельзя вставить в столбец ClickHouse типа
Int32).