Поддерживаемые версии Postgres
ClickPipes поддерживает Postgres версии 12 и новее.
Включите логическую репликацию
Вы можете пропустить этот раздел, если для вашего экземпляра RDS уже задан следующий параметр:
rds.logical_replication = 1
Обычно этот параметр уже настроен, если вы ранее использовали другой инструмент для репликации данных.
postgres=> SHOW rds.logical_replication ;
rds.logical_replication
-------------------------
on
(1 row)Если это ещё не настроено, выполните следующие действия:
- Создайте новую группу параметров для вашей версии Postgres с требуемыми настройками:
- Установите
rds.logical_replicationв значение 1
- Установите


- Примените новую группу параметров к вашей базе данных RDS Postgres

- Перезагрузите экземпляр RDS, чтобы изменения вступили в силу

Настройка пользователя базы данных
Подключитесь к своему экземпляру RDS Postgres от имени администратора и выполните следующие команды:
-
Создайте отдельного пользователя для ClickPipes:
CREATE USER clickpipes_user PASSWORD 'some-password'; -
Выдайте пользователю, созданному на предыдущем шаге, права только для чтения на уровне схемы. В следующем примере показаны разрешения для схемы
public. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:GRANT USAGE ON SCHEMA "public" TO clickpipes_user; GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user; ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user; -
Выдайте пользователю права на репликацию:
GRANT rds_replication TO clickpipes_user; -
Создайте публикацию с таблицами, которые вы хотите реплицировать. Мы настоятельно рекомендуем включать в публикацию только необходимые таблицы, чтобы избежать лишних накладных расходов на производительность.
-
Чтобы создать публикацию для определённых таблиц:
CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;-
Чтобы создать публикацию для всех таблиц в определённой схеме:
CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
-
Публикация clickpipes определяет набор таблиц, события изменений в которых будут передаваться в ClickPipes. Мы не рекомендуем использовать FOR ALL TABLES, если только вы не собираетесь реплицировать все таблицы, поскольку включение лишних таблиц увеличивает объём WAL-трафика из Postgres в ClickPipes и снижает общую эффективность репликации.
Использование IAM-аутентификации (необязательно)
Instead of a password, you can authenticate the ClickPipes user with an AWS IAM role. This lets ClickPipes connect to your Amazon RDS instance without storing database credentials.
Enable IAM authentication
- Log in to your AWS account and go to the RDS instance you want to configure.
- Click Modify.
- Scroll to the Database authentication section.
- Select Password and IAM database authentication.
- Click Continue.
- Review the changes and select Apply immediately.
Create the ClickPipes user
Create the ClickPipes user with IAM authentication enabled, then grant it the same schema and replication privileges shown above:
CREATE USER clickpipes_iam_user;
GRANT rds_iam TO clickpipes_iam_user;Obtain the ClickHouse service IAM role ARN
- Log in to your ClickHouse Cloud account.
- Select the ClickHouse service you want to connect.
- Select the Settings tab.
- Scroll to the Network security information section at the bottom of the page.
- Copy the service's Service role ID (IAM) value, shown below.

This value is your {ClickHouse_IAM_ARN} — the role ClickPipes uses to access your RDS instance.
Obtain the resource ID
- Log in to your AWS account and go to the RDS instance you want to configure.
- Select the Configuration tab.
- Note the Resource ID value — it looks like
db-xxxxxxxxxxxxxx. This is your{RDS_RESOURCE_ID}, which you reference in the permissions policy.
Create the IAM role
- Log in to your AWS account with an IAM user that has permission to create and manage IAM roles.
- Open the IAM console.
- Create a new IAM role with the following trust and permissions policies.
Trust policy (replace
{ClickHouse_IAM_ARN}with the IAM role ARN of your ClickHouse instance):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "{ClickHouse_IAM_ARN}" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }Permissions policy (replace
{RDS_RESOURCE_ID}with the resource ID of your RDS instance,{RDS_REGION}with its region, and{AWS_ACCOUNT}with your AWS account ID):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:{RDS_REGION}:{AWS_ACCOUNT}:dbuser:{RDS_RESOURCE_ID}/clickpipes_iam_user" ] } ] } - Once the role is created, copy its ARN. This is your
{RDS_ACCESS_IAM_ROLE_ARN}.
You can now use this IAM role to authenticate with your RDS instance from ClickPipes.
Настройка сетевого доступа
Управление доступом по IP-адресам
Если вы хотите ограничить трафик к своему экземпляру RDS, добавьте задокументированные статические NAT IP-адреса в раздел Inbound rules группы безопасности RDS.


Частный доступ через AWS PrivateLink
Чтобы подключиться к экземпляру RDS через частную сеть, можно использовать AWS PrivateLink. Для настройки подключения следуйте нашему руководству по настройке AWS PrivateLink для ClickPipes.
Варианты обхода для RDS Proxy
RDS Proxy не поддерживает подключения для логической репликации. Если в RDS у вас используются динамические IP-адреса и вы не можете использовать DNS-имя или Lambda, вот несколько альтернатив:
- Используйте задание cron, чтобы периодически определять IP-адрес конечной точки RDS и обновлять NLB, если он изменился.
- Используйте уведомления о событиях RDS с EventBridge/SNS: автоматически запускайте обновления через уведомления AWS RDS о событиях.
- Стабильный EC2: разверните экземпляр EC2, который будет выступать в роли сервиса опроса или IP-прокси.
- Автоматизируйте управление IP-адресами с помощью таких инструментов, как Terraform или CloudFormation.
Что дальше?
Теперь вы можете создать свой ClickPipe и начать ингестию данных из вашего экземпляра Postgres в ClickHouse Cloud. Обязательно сохраните сведения о подключении, которые вы использовали при настройке экземпляра Postgres, так как они понадобятся вам при создании ClickPipe.