Настройка доступа к Object Storage из кластера ClickHouse®
Managed Service for ClickHouse® поддерживает работу с Yandex Object Storage для:
- подключения моделей машинного обучения, схем формата данных и собственной геобазы;
- обработки данных, которые находятся в объектном хранилище, если эти данные представлены в любом из поддерживаемых ClickHouse® форматов
.
Для доступа к данным в бакете Object Storage из кластера настройте беспарольный доступ к бакету с помощью сервисного аккаунта:
См. также Примеры работы с объектами.
Перед началом работы убедитесь, что вашему аккаунту в Yandex Cloud назначена роль iam.serviceAccounts.user или выше. Она нужна в следующих случаях:
- если вы создаете или изменяете кластер и привязываете к нему сервисный аккаунт;
- если вы восстанавливаете из резервной копии кластер с привязкой к сервисному аккаунту.
Подключите сервисный аккаунт к кластеру
-
При создании или изменении кластера выберите существующий сервисный аккаунт, либо создайте новый.
-
Убедитесь, что этому аккаунту назначены корректные роли из группы ролей
storage.*
. При необходимости назначьте нужные роли, например,storage.viewer
иstorage.uploader
.
Совет
Для связи кластеров Managed Service for ClickHouse® с Object Storage рекомендуется использовать специально созданные для этой цели сервисные аккаунты: это позволяет организовать работу с любыми бакетами, в том числе с такими, для которых предоставление публичного доступа нежелательно или невозможно.
Настройте права доступа
-
В консоли управления
выберите каталог, в котором находится нужный бакет. Если бакета не существует — создайте его и наполните необходимыми данными. -
Выберите сервис Object Storage.
-
Настройте ACL бакета или ACL объекта:
- В списке бакетов или объектов выберите нужный элемент и нажмите на значок
. - Нажмите ACL бакета или ACL объекта.
- В выпадающем списке Выберите пользователя укажите сервисный аккаунт, подключенный к кластеру.
- Задайте нужные разрешения для сервисного аккаунта из выпадающего списка.
- Нажмите кнопку Добавить и Сохранить.
Примечание
При необходимости отзовите доступ у одного или нескольких пользователей, нажав кнопку Отменить в нужной строке.
- В списке бакетов или объектов выберите нужный элемент и нажмите на значок
Примеры работы с объектами
На объект в бакете можно получить ссылку вида https://storage.yandexcloud.net/<имя_бакета>/<имя_объекта>
. Ее можно использовать при работе с геометками, схемами, а также при использовании табличной функции s3
и табличного движка S3
.
Табличный движок S3
аналогичен движкам FileSELECT
и INSERT
.
Табличная функция s3
предоставляет ту же самую функциональность, что и движок таблиц S3
, но при ее использовании не требуется предварительно создавать таблицу.
Например, если в бакете Object Storage в файле table.tsv
хранятся данные таблицы в формате TSV, то можно создать таблицу или функцию, которая будет работать с этим файлом. Предполагается, что настроен беспарольный доступ и получена ссылка на файл table.tsv
.
-
Сервисному аккаунту, привязанному к кластеру Managed Service for ClickHouse®, назначьте роли
managed-clickhouse.editor
иstorage.uploader
. -
Создайте таблицу:
CREATE TABLE test (n Int32) ENGINE = S3('https://storage.yandexcloud.net/<имя_бакета>/table.tsv', 'TSV');
-
Выполните тестовые запросы к таблице:
INSERT INTO test VALUES (1); SELECT * FROM test; ┌─n─┐ │ 1 │ └───┘
-
Сервисному аккаунту, привязанному к кластеру Managed Service for ClickHouse®, назначьте роли
managed-clickhouse.editor
иstorage.uploader
. -
Вставьте данные:
INSERT INTO FUNCTION s3('https://storage.yandexcloud.net/<имя_бакета>/table.tsv', 'TSV', 'n Int32') VALUES (1);
-
Выполните тестовый запрос:
SELECT * FROM s3('https://storage.yandexcloud.net/<имя_бакета>/table.tsv', 'TSV', 'n Int32'); ┌─n─┐ │ 1 │ └───┘
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc