Назначение Google Cloud Storage
Renta записывает данные из любого подключённого источника в ваш бакет Google Cloud Storage в виде Parquet-о бъектов, раскладывает их по папке на пайплайн и обновляет на каждом запуске.
Каждый запрос к бакету Renta подписывает ключом сервисного аккаунта, который вы загружаете один раз. Ничего в бакете не нужно открывать наружу, аккаунт Google конкретного человека не задействован.
Требования
Подключению нужны ключ сервисного аккаунта, уже созданный бакет и две роли IAM для этого сервисного аккаунта.
- Сервисный аккаунт с JSON-ключом.
В Google Cloud Console откройте IAM & Admin > Service Accounts, создайте сервисный аккаунт или выберите существующий, затем на вкладке Keys нажмите Add key > Create new key и выберите тип JSON. Скачанный файл вы и загрузите в Renta. - Storage Object Admin на бакете.
Renta просматривает, загружает и удаляет объекты внутри своих папок. Выдайте рольroles/storage.objectAdminна бакете или на проекте, если Renta будет писать не только в этот бакет. - Viewer на проекте.
Страница подключения показывает список бакетов проекта, а для этого нужно правоstorage.buckets.list. Его даёт предопределённая роль Viewer (roles/viewer). Без неё список бакетов остаётся пустым. - Существующий бакет.
Renta не создаёт бакет. Она создаёт только папки внутри него.
Email сервисного аккаунта записан в поле client_email JSON-ключа. После подключения Renta показывает его на карточке подключения как аккаунт, от имени которого записываются данные.
Подключение Google Cloud Storage в качестве назначения
Подключение хранит один ключ сервисного аккаунта, один проект и один бакет.
- В консоли Renta откройте Connections > Catalog в левом меню.
- Раскройте категорию Data lake и нажмите карточку Google Cloud Storage.

Нажмите Upload a Service Account JSON file и выберите ключ, скачанный из Google Cloud.
Renta сразу проверяет ключ в Google. Файл без полей ключа сервисного аккаунта или ключ, который Google отклонил, возвра щает ошибку на этой же странице, и ничего не сохраняется. Рабочий ключ открывает настройки подключения.

- Destination name.
Название, которое используется только внутри консоли Renta. - Google Cloud Storage project.
Проект ключа выбран заранее. Другие проекты появляются в списке, если сервисный аккаунт их видит. - Google Cloud Storage bucket name.
Выберите бакет, в который пишет Renta. В списке показаны бакеты выбранного проекта.
Нажмите Save.
При нажатии Save Renta создаёт и удаляет в бакете служебную папку вашим ключом. Ключ б ез права записи в бакет возвращает ошибку сразу, а не на первом запуске пайплайна.

Подключение появляется в списке Destinations со статусом Active и готово к пайплайнам. Подключение, у которого бакет ещё не выбран, остаётся неактивным и в мастере пайплайна не предлагается.

Замена ключа
Откройте подключение в разделе Destinations и нажмите Upload a new Service Account JSON file вверху стран ицы настроек. Renta проверяет новый ключ на сохранённом бакете до того, как заменить старый, поэтому ключ без права записи отклоняется, а старый остаётся на месте. Проект и бакет при этом не меняются.
Создание пайплайна в Google Cloud Storage
В шагах ниже источником служит Currency Exchange Rates, для любого другого источника последовательность та же.
В левом меню нажмите New pipeline. Оставьте вкладку ETL, выберите источник в блоке Already connected, затем подключение, из которого читать, и нажмите Next step.
На шаге Destination выберите Google Cloud Storage в блоке Already connected, затем нужное подключение. На карточке показаны имя бакета, email сервисного аккаунта и проект.
Заполните настройки источника, затем настройки пайплайна:
- Integration name.
Отображаемое название пайплайна в консоли Renta. - Table name.
Для озера данных это имя папки внутри бакета. Оставьте сгенерированное имя или введите своё. - Date range, Overwrite period и Schedule работают так же, как для любого другого назначения. Типы расписаний описаны на странице расписания пайплайнов.
Нажмите Create pipeline. Пайплайн появляется в разделе Pipelines на вкладке ETL вместе с именем папки, прогрессом запуска и числом извлечённых строк.

Renta очищает папку, перебирая всё под её префиксом, поэтому папка stripe захватывает и stripe_invoices. Выбирайте имена папок так, чтобы одно не было началом другого, иначе полная перезагрузка короткой папки сотрёт длинную.
Раскладка в бакете
Всё, что пишет пайплайн, лежит под его собственной папкой, а устройство внутри зависит от того, есть ли у данных дата.
| Данные | Имя объекта |
|---|---|
| Типы отчётов с разбивкой по датам | <папка>/<ГГГГ-ММ-ДД>/<файл>.parquet |
| Все остальные | <папка>/<файл>.parquet |
Префикс с датой и делает окно перезаписи дешёвым: Renta убирает объекты только затронутых дней, а не всю папку. Такую же раскладку ожидают внешние таблицы BigQuery, Dataproc и Spark, поэтому партиции находятся без дополнительной настройки.
Рядом с папкой Renta держит объект нулевого размера с точно таким же именем. Он помечает папку и данных не содержит.
Стратегия синхронизации
Способ обновления папки зависит от источник а и от настроек пайплайна.
| Стратегия | Когда применяется | Описание |
|---|---|---|
| Полная перезагрузка | Типы отчётов без колонки с датой и любые пайплайны с папкой без разбивки по датам | Renta удаляет все объекты под префиксом папки и загружает полную выгрузку заново, поэтому папка повторяет состояние источника на момент запуска. |
| Инкрементальное обновление | Типы отчётов с колонкой даты и папкой, разбитой по датам | Renta удаляет объекты окна перезаписи по префиксу даты и загружает эти дни заново. Дни старше окна остаются как были. |
Merge-режима у Google Cloud Storage нет. Источники, которые обновляют изменённые записи в таблице хранилища, здесь переключаются на полную перезагрузку, потому что в объектном хранилище нечего обновлять построчно.
Отдельно стоит запуск после изм енения списка полей. Папка удаляется и собирается заново, а весь период из Date Range загружается ещё раз.
Диагностика ошибок
Большинство проблем проявляется на странице подключения, до запуска пайплайнов.
| Сообщение | Причина | Что делать |
|---|---|---|
| This file is not a Google service account key | В загруженном JSON нет полей ключа, скачанного из Google Cloud, например client_email или private_key. | Скачайте ключ заново в IAM & Admin > Service Accounts > Keys и загрузите этот файл. Файлы OAuth-клиента и application default credentials не принимаются. |
| Google rejected the service account key | Google не выдал токен по ключу. Ключ удалён или отключён, либо сервисного аккаунта больше нет. | Создайте новый ключ для сервисного аккаунта и загрузите его. Если аккаунт удалён, создайте новый с ролями из раздела «Требования». |
| The service account cannot write into bucket | Ключ рабочий, но служебную папку не удалось создать или удалить в бакете. | Выдайте роль Storage Object Admin на бакете сервисному аккаунту с email с карточки подключения и снова нажмите Save. |
| No accessible buckets are available for the specified project | Сервисный аккаунт не может получить список бакетов проекта. | Выдайте роль Viewer на проекте или проверьте, что выбран проект, которому принадлежит бакет. |
Ответ, который Renta не распознала, в лог запуска в исходном виде не попадает. Вместо него показывается An error has occurred. Please contact the technical support team. без деталей от Google. Увидели такой текст, напишите в поддержку Renta.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.