Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

RDS Postgres ソース設定ガイド

サポートされているPostgresのバージョン

ClickPipes は Postgres 12 以降をサポートしています。

論理レプリケーションを有効にする

RDSインスタンスで以下の設定がすでに有効になっている場合は、このセクションはスキップできます。

  • rds.logical_replication = 1

以前に別のデータレプリケーションツールを使用していた場合は、通常この設定はあらかじめ有効になっています。

postgres=> SHOW rds.logical_replication ;
 rds.logical_replication
-------------------------
 on
(1 row)

まだ設定していない場合は、以下の手順に従ってください。

  1. 必要な設定を含む、使用中の Postgres バージョン用の新しいパラメータグループを作成します。
    • rds.logical_replication を 1 に設定します
RDS でパラメータグループを確認する場所
rds.logical_replication の変更
  1. 新しいパラメータグループを RDS Postgres データベースに適用します
新しいパラメータグループを使用して RDS Postgres を変更
  1. 変更を反映するため、RDS インスタンスを再起動します
RDS Postgres の再起動

データベースユーザーを設定する

管理者ユーザーとして RDS Postgres インスタンスに接続し、次のコマンドを実行します。

  1. ClickPipes 専用のユーザーを作成します。

    CREATE USER clickpipes_user PASSWORD 'some-password';
  2. 前の手順で作成したユーザーに、スキーマレベルの読み取り専用アクセス権を付与します。次の例は 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;
  3. ユーザーにレプリケーション権限を付与します。

    GRANT rds_replication TO clickpipes_user;
  4. レプリケートしたいテーブルを含む publication を作成します。パフォーマンスのオーバーヘッドを避けるため、publication には必要なテーブルだけを含めることを強く推奨します。

  • 特定のテーブルに対する publication を作成するには:

    CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
    • 特定のスキーマ内のすべてのテーブルに対する publication を作成するには:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";

clickpipes publication は、変更イベントが ClickPipes にストリーミングされる対象テーブルの集合を定義します。すべてのテーブルをレプリケートする意図がある場合を除き、FOR ALL TABLES の使用は推奨しません。不要なテーブルを含めると、Postgres から ClickPipes への WAL トラフィックが増加し、レプリケーション全体の効率が低下するためです。

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

  1. Log in to your AWS account and go to the RDS instance you want to configure.
  2. Click Modify.
  3. Scroll to the Database authentication section.
  4. Select Password and IAM database authentication.
  5. Click Continue.
  6. 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

  1. Log in to your ClickHouse Cloud account.
  2. Select the ClickHouse service you want to connect.
  3. Select the Settings tab.
  4. Scroll to the Network security information section at the bottom of the page.
  5. Copy the service's Service role ID (IAM) value, shown below.
Service role ID (IAM) value in the Network security information section

This value is your {ClickHouse_IAM_ARN} — the role ClickPipes uses to access your RDS instance.

Obtain the resource ID

  1. Log in to your AWS account and go to the RDS instance you want to configure.
  2. Select the Configuration tab.
  3. 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

  1. Log in to your AWS account with an IAM user that has permission to create and manage IAM roles.
  2. Open the IAM console.
  3. 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"
          ]
        }
      ]
    }
  4. 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 インスタンスへのトラフィックを制限する場合は、RDS のセキュリティグループの Inbound rules に、ドキュメントに記載されている固定 NAT IP を追加してください。

RDS Postgres でセキュリティグループはどこにありますか?
上記のセキュリティグループの Inbound rules を編集

プライベートネットワーク経由で RDS インスタンスに接続するには、AWS PrivateLink を使用できます。接続を設定するには、ClickPipes 向け AWS PrivateLink セットアップガイドを参照してください。

RDS Proxy の回避策

RDS Proxy は論理レプリケーション接続をサポートしていません。RDS で動的 IP アドレスを使用していて、DNS 名または Lambda を使えない場合は、次の代替手段があります。

  1. cron ジョブを使って定期的に RDS エンドポイントの IP を名前解決し、変更されていた場合は NLB を更新します。
  2. EventBridge/SNS と RDS Event Notifications を使用する: AWS RDS のイベント通知を使って更新を自動的にトリガーします
  3. 固定 EC2: EC2 インスタンスをデプロイし、ポーリングサービスまたは IP ベースのプロキシとして動作させます
  4. Terraform や CloudFormation などのツールを使用して、IP アドレス管理を自動化します。

次のステップ

これで、ClickPipe を作成して、Postgres インスタンスから ClickHouse Cloud へのデータの取り込みを開始できます。 ClickPipe の作成時に必要になるため、Postgres インスタンスのセットアップ時に使用した接続情報は必ず控えておいてください。

Navigation