> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Настройка Amazon Aurora Postgres в качестве источника для ClickPipes

# Руководство по настройке Aurora Postgres в качестве источника

export const IAMAuthentication = ({engine, service, children}) => {
  const services = {
    aurora: {
      name: 'Aurora',
      resource: 'cluster',
      id: 'cluster-xxxxxxxxxxxxxx'
    },
    rds: {
      name: 'RDS',
      resource: 'instance',
      id: 'db-xxxxxxxxxxxxxx'
    }
  };
  const createUserStatements = {
    postgres: `CREATE USER clickpipes_iam_user;
GRANT rds_iam TO clickpipes_iam_user;`,
    mysql: `CREATE USER 'clickpipes_iam_user' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';`
  };
  const svc = services[String(service).toLowerCase()];
  const createUserSql = createUserStatements[String(engine).toLowerCase()];
  if (!svc) throw new Error(`Unsupported IAM authentication service: ${service}`);
  if (!createUserSql) throw new Error(`Unsupported IAM authentication engine: ${engine}`);
  return <>
      <p>
        Instead of a password, you can authenticate the ClickPipes user with an AWS IAM role. This lets ClickPipes connect to your Amazon {svc.name} {svc.resource} without storing database credentials.
      </p>

      <h4 id="enable-iam-authentication">Enable IAM authentication</h4>

      <ol>
        <li>Log in to your AWS account and go to the {svc.name} {svc.resource} you want to configure.</li>
        <li>Click <strong>Modify</strong>.</li>
        <li>Scroll to the <strong>Database authentication</strong> section.</li>
        <li>Select <strong>Password and IAM database authentication</strong>.</li>
        <li>Click <strong>Continue</strong>.</li>
        <li>Review the changes and select <strong>Apply immediately</strong>.</li>
      </ol>

      <h4 id="create-database-user">Create the ClickPipes user</h4>

      <p>Create the ClickPipes user with IAM authentication enabled, then grant it the same schema and replication privileges shown above:</p>

      <CodeBlock language="sql">{createUserSql}</CodeBlock>

      {children}

      <h4 id="obtaining-the-clickhouse-service-iam-role-arn">Obtain the ClickHouse service IAM role ARN</h4>

      <ol>
        <li>Log in to your ClickHouse Cloud account.</li>
        <li>Select the ClickHouse service you want to connect.</li>
        <li>Select the <strong>Settings</strong> tab.</li>
        <li>Scroll to the <strong>Network security information</strong> section at the bottom of the page.</li>
        <li>Copy the service's <strong>Service role ID (IAM)</strong> value, shown below.</li>
      </ol>

      <Frame>
        <img src="/docs/images/cloud/security/secures3_arn.webp" alt="Service role ID (IAM) value in the Network security information section" />
      </Frame>

      <p>This value is your <code>{'{ClickHouse_IAM_ARN}'}</code> — the role ClickPipes uses to access your {svc.name} {svc.resource}.</p>

      <h4 id="obtaining-the-rds-resource-id">Obtain the resource ID</h4>

      <ol>
        <li>Log in to your AWS account and go to the {svc.name} {svc.resource} you want to configure.</li>
        <li>Select the <strong>Configuration</strong> tab.</li>
        <li>Note the <strong>Resource ID</strong> value — it looks like <code>{svc.id}</code>. This is your <code>{'{RDS_RESOURCE_ID}'}</code>, which you reference in the permissions policy.</li>
      </ol>

      <h4 id="manually-create-iam-role">Create the IAM role</h4>

      <ol>
        <li>Log in to your AWS account with an IAM user that has permission to create and manage IAM roles.</li>
        <li>Open the IAM console.</li>
        <li>
          Create a new IAM role with the following trust and permissions policies.

          <p>Trust policy (replace <code>{'{ClickHouse_IAM_ARN}'}</code> with the IAM role ARN of your ClickHouse instance):</p>

          <CodeBlock language="json">{`{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "{ClickHouse_IAM_ARN}"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}`}</CodeBlock>

          <p>Permissions policy (replace <code>{'{RDS_RESOURCE_ID}'}</code> with the resource ID of your {svc.name} {svc.resource}, <code>{'{RDS_REGION}'}</code> with its region, and <code>{'{AWS_ACCOUNT}'}</code> with your AWS account ID):</p>

          <CodeBlock language="json">{`{
  "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"
      ]
    }
  ]
}`}</CodeBlock>
        </li>
        <li>Once the role is created, copy its ARN. This is your <code>{'{RDS_ACCESS_IAM_ROLE_ARN}'}</code>.</li>
      </ol>

      <p>You can now use this IAM role to authenticate with your {svc.name} {svc.resource} from ClickPipes.</p>
    </>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<div id="supported-postgres-versions">
  ## Поддерживаемые версии Postgres
</div>

ClickPipes поддерживает Aurora PostgreSQL-Compatible Edition версии 12 и выше.

<div id="enable-logical-replication">
  ## Включите логическую репликацию
</div>

Этот раздел можно пропустить, если для вашего экземпляра Aurora уже настроен следующий параметр:

* `rds.logical_replication = 1`

Этот параметр обычно уже включён, если вы ранее использовали другой инструмент для репликации данных.

```text theme={null}
postgres=> SHOW rds.logical_replication ;
 rds.logical_replication
-------------------------
 on
(1 row)
```

Если это ещё не настроено, выполните следующие действия:

1. Создайте новую группу параметров для вашей версии Aurora PostgreSQL с нужной настройкой:
   * Установите `rds.logical_replication` в значение 1

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/parameter_group_in_blade.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=544b6653493e22c0ce7b914b340590e8" alt="Где найти группы параметров в Aurora" size="lg" border width="1800" height="819" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/parameter_group_in_blade.webp" />

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/change_rds_logical_replication.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=0632537820a4fca3db4b99dd3a6e8e6a" alt="Изменение rds.logical_replication" size="lg" border width="1800" height="795" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/change_rds_logical_replication.webp" />

2. Примените новую группу параметров к кластеру Aurora PostgreSQL

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/modify_parameter_group.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=213e9c50f960e1e27acd6dcbe57f2d46" alt="Изменение Aurora PostgreSQL с новой группой параметров" size="lg" border width="1800" height="1352" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/modify_parameter_group.webp" />

3. Перезагрузите кластер Aurora, чтобы применить изменения

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/reboot_rds.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=4b5bbff654c690b853c4a3503446df9b" alt="Перезагрузка Aurora PostgreSQL" size="lg" border width="1800" height="757" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/reboot_rds.webp" />

<div id="configure-database-user">
  ## Настройте пользователя базы данных
</div>

Подключитесь к своему экземпляру Aurora PostgreSQL writer от имени администратора и выполните следующие команды:

1. Создайте отдельного пользователя для ClickPipes:

   ```sql theme={null}
   CREATE USER clickpipes_user PASSWORD 'some-password';
   ```

2. Предоставьте пользователю, созданному на предыдущем шаге, доступ к схеме в режиме только для чтения. В следующем примере показаны разрешения для схемы `public`. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:

   ```sql theme={null}
   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;
   ```

3. Предоставьте пользователю права на репликацию:

   ```sql theme={null}
   GRANT rds_replication TO clickpipes_user;
   ```

4. Создайте [публикацию](https://www.postgresql.org/docs/current/logical-replication-publication.html) с таблицами, которые вы хотите реплицировать. Мы настоятельно рекомендуем включать в публикацию только нужные таблицы, чтобы избежать лишней нагрузки на производительность.

<Warning>
  Любая таблица, включённая в публикацию, должна либо иметь определённый **первичный ключ**, *либо* иметь параметр **replica identity**, установленный в `FULL`. Рекомендации по определению состава публикации см. в [FAQ по Postgres](/docs/ru/integrations/clickpipes/postgres/faq#how-should-i-scope-my-publications-when-setting-up-replication).
</Warning>

* Чтобы создать публикацию для определённых таблиц:

  ```sql theme={null}
  CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
  ```

  * Чтобы создать публикацию для всех таблиц в определённой схеме:

    ```sql theme={null}
    CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
    ```

Публикация `clickpipes` определяет набор таблиц, события изменений из которых будут передаваться в ClickPipes. Мы не рекомендуем использовать `FOR ALL TABLES`, если только вы действительно не планируете реплицировать все таблицы, поскольку включение лишних таблиц увеличивает объём WAL-трафика из Postgres в ClickPipes и снижает общую эффективность репликации.

<div id="iam-authentication">
  ### Использование аутентификации IAM (необязательно)
</div>

<IAMAuthentication engine="postgres" service="aurora">
  <Note>
    Для аутентификации IAM при репликации параметр `rds.iam_auth_for_replication` должен быть установлен в `1`.
  </Note>
</IAMAuthentication>

<div id="configure-network-access">
  ## Настройка сетевого доступа
</div>

<div id="ip-based-access-control">
  ### Управление доступом на основе IP
</div>

Если вы хотите ограничить трафик к своему кластеру Aurora, добавьте [задокументированные статические NAT IP-адреса](/docs/ru/integrations/clickpipes/networking/static-ips) в правила входящего трафика (`Inbound rules`) вашей группы безопасности Aurora.

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/security_group_in_rds_postgres.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=66e739ad9a204f9090663215001fcc49" alt="Где найти группу безопасности в Aurora PostgreSQL?" size="lg" border width="1800" height="707" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/security_group_in_rds_postgres.webp" />

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/edit_inbound_rules.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=9808abca84e218a11bf9a241473ba062" alt="Изменение правил входящего трафика для указанной выше группы безопасности" size="lg" border width="1800" height="935" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/edit_inbound_rules.webp" />

<div id="private-access-via-aws-privatelink">
  ### Приватный доступ через AWS PrivateLink
</div>

Чтобы подключиться к кластеру Aurora через частную сеть, можно использовать AWS PrivateLink. Чтобы настроить подключение, следуйте нашему [руководству по настройке AWS PrivateLink для ClickPipes](/docs/ru/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-clickpipes).

<div id="aurora-specific-considerations">
  ### Особенности Aurora
</div>

При настройке ClickPipes с Aurora PostgreSQL учитывайте следующие особенности:

1. **Конечная точка подключения**: Всегда подключайтесь к конечной точке записи (writer endpoint) вашего кластера Aurora, так как логическая репликация требует доступа на запись для создания слотов репликации и должна подключаться к основному экземпляру.

2. **Обработка переключения при сбое**: В случае failover Aurora автоматически повысит reader до нового writer. ClickPipes обнаружит разрыв connection и попытается повторно подключиться к writer endpoint, который теперь будет указывать на новый основной экземпляр.

3. **Global Database**: Если вы используете Aurora Global Database, следует подключаться к writer endpoint основного региона, так как межрегиональная репликация уже обеспечивает перемещение данных между регионами.

4. **Особенности хранения**: В Aurora уровень хранения является общим для всех экземпляров в кластере, что может обеспечивать более высокую производительность логической репликации по сравнению со стандартным RDS.

<div id="dealing-with-dynamic-cluster-endpoints">
  ### Работа с динамическими конечными точками кластера
</div>

Хотя Aurora предоставляет стабильные конечные точки, которые автоматически направляют трафик на соответствующий экземпляр, есть и другие способы обеспечить стабильное подключение:

1. В конфигурациях с высокой доступностью настройте приложение на использование конечной точки записи Aurora, которая автоматически указывает на текущий основной экземпляр.

2. Если вы используете межрегиональную репликацию, рассмотрите возможность настройки отдельных ClickPipes для каждого региона, чтобы снизить задержку и повысить отказоустойчивость.

<div id="whats-next">
  ## Что дальше?
</div>

Теперь вы можете [создать свой ClickPipe](/docs/ru/integrations/clickpipes/postgres/index) и начать приём данных из вашего кластера Aurora PostgreSQL в ClickHouse Cloud.
Обязательно сохраните сведения о подключении, которые вы использовали при настройке кластера Aurora PostgreSQL, так как они понадобятся вам при создании ClickPipe.
