Klaviyo と Redshift を接続する
アドバンストKDPはKlaviyoの標準マーケティングアプリケーションには含まれておらず、関連機能にアクセスするにはサブスクリプションが必要です。このプランの購入方法については、請求ガイドをご覧ください。

概要
このガイドでは、Redshift 管理者向けに、Klaviyo 用に Amazon Redshift を準備し、必要最小限のアクセス権を付与し、接続を完了して、スケジュールに従ってプロファイルデータをインポートできるようにする手順を説明します。次の内容を学習します:
KLAVIYO_TMPとKLAVIYO_IMPORT_FROM_DWHのスキーマを作成- Klaviyo 専用のサービスユーザーを作成する
- 最小権限のアクセス権限を付与する
- (任意)権限と接続を検証する
- Redshift を Klaviyo に接続して同期の作成を開始する
データウェアハウスのインポートの仕組み(対応オブジェクトやテーブル構造のベストプラクティスを含む)の背景については、Klaviyo のデータウェアハウスのインポートについて理解する を参照してください。
必須のスキーマを作成する
Redshift が Klaviyo に使用するデータベースに 2 つのスキーマを作成します。
-- Run as a Redshift DB admin or a role with CREATE SCHEMA
CREATE SCHEMA IF NOT EXISTS klaviyo_import_from_dwh;
CREATE SCHEMA IF NOT EXISTS klaviyo_tmp;KLAVIYO_IMPORT_FROM_DWH– 同期の準備が整った最終的なテーブルまたはビューをここに配置します。セットアップ中、Klaviyo によりこのスキーマ内のオブジェクトが一覧表示されて選択できるため、インポートする予定のテーブルのみを含めてください。KLAVIYO_TMP– 同期ジョブ中に一時/ステージング テーブルとして使用するために Klaviyo が排他的に使用します。ここではデータを変更しないでください。Klaviyo はこのスキーマを自動的に管理し、クリーンアップします。
Klaviyoサービスユーザーを作成
Klaviyo 用に専用のデータベース ユーザーを作成し、独立してローテーションできる強力なパスワードを設定します。
-- Replace with your own names and a strong password
CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD';サービス ユーザーの権限付与を管理するロールを作成します:
CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user;ユーザー名とパスワードは安全に保管してください。Klaviyo を Redshift に接続する際に使用します。
必要な権限を付与します(最小権限)。
-- 1) Allow temporary tables
GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role;
-- 2) Permissions on the staging schema Klaviyo manages
GRANT USAGE ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role;
GRANT CREATE ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role;
-- 3) Read-only access to your import schema
GRANT USAGE ON SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role;
GRANT SELECT ON ALL TABLES IN SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role;
-- Remember to grant access to new tables in the future
-- 3a) Grant SELECT on specific views (repeat as needed)
GRANT SELECT ON VIEW klaviyo_import_from_dwh.example_view_name TO ROLE klaviyo_data_transfer_role;(Optional) 設定を確認する
Klaviyo ユーザーとしていくつかの簡単なチェックを実行し、付与が正しいことを確認します。
-- Switch to the target database
SET search_path TO klaviyo_tmp;
-- 4.1 Validate create/read in KLAVIYO_TMP
CREATE TABLE IF NOT EXISTS permission_check (id INT);
INSERT INTO permission_check VALUES (1);
SELECT COUNT(*) FROM permission_check; -- expect 1
DROP TABLE permission_check;
-- 4.2 Confirm visibility of import tables
SET search_path TO klaviyo_import_from_dwh;
SELECT tablename FROM pg_table_def
WHERE schemaname = 'klaviyo_import_from_dwh'
LIMIT 25;
-- 4.3 Confirm SELECT on a source table or view
SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE;ネットワークアクセス
Klaviyo が Redshift エンドポイントに到達できる必要があります。
- 公開 Redshift エンドポイント:ファイアウォールまたはセキュリティグループで、Klaviyo の静的 IP を許可リストに追加します。
- プライベート エンドポイント (例: PrivateLink):内部ネットワーク パスとセキュリティ ポリシーを通じて接続性を確保してください。
セキュリティグループを使用している場合は、Klaviyo の IP 範囲に対して Redshift ポート(デフォルト 5439)への受信アクセスを許可してください:
184.72.183.187/32
52.206.71.52/32
3.227.146.32/32
44.198.39.11/32
35.172.58.121/32
3.228.37.244/32
54.88.219.8/32
3.214.211.176/32インポートテーブルを準備する(構造とパフォーマンス)
正確で効率的な増分同期を行うために、インポート予定のすべてのテーブルが次の規則に従っていることを確認してください。
- タイムスタンプ列:行ごとの作成または最終更新のタイムスタンプ(例:
inserted_at、updated_at、modified_at)を含めます。 - 単調更新:行が変更されるたびにタイムスタンプが増加する必要があります。
- タイムゾーン: UTC を使用するか、タイムゾーン情報を含めてください。見つからない場合、Klaviyo は UTC とみなします。
- 一貫した識別子: 重複を避けるために、インポート テーブル全体で同じプロファイル識別子(
email、phone、external_idなど)を使用してください。 - 同意形式:同意データを同期する場合は、ファイルまたは SFTP アップロードで使用される有効な値/形式と同じものに従ってください。
- パフォーマンス:効率的な増分読み取りのために、タイムスタンプ列のソートキーまたは dist キーを検討してください。
- Views: 単純な
SELECTが Klaviyo ユーザーで機能する限り、テーブルまたはビューからインポートできます。
Redshift を Klaviyo に接続する
- Klaviyo で左側のサイドバーを開き、詳細 → 同期に移動します。
- [同期を作成] をクリックします。
- [データウェアハウスからデータをインポート] を選択します。
- Redshift を選択します。
- [Redshift に接続] をクリックして、次の接続の詳細を入力してください。
フィールド | 説明 |
|---|---|
ホスト | Redshift エンドポイント(例: |
ポート | 5439(またはカスタム ポート) |
データベース |
|
ユーザー名 / パスワード | Klaviyoサービスのユーザー認証情報 |
接続後、Klaviyo は認証情報とネットワーク接続をテストします。検証が完了すると、同期を作成し、klaviyo_import_from_dwh からテーブルまたはビューを選択できます。
トラブルシューティングのヒント
接続テストに失敗します
- ファイアウォールまたはセキュリティ グループのルールで、Klaviyo の IP が正しいポートで Redshift エンドポイントに到達できることを確認してください。
- SSL 設定と、正しいエンドポイント(クラスターとワークグループ)、リージョン、ポートを使用していることを確認します。
テーブルが表示されない
- テーブルが
klaviyo_import_from_dwhにあることを確認してください。 - Klaviyo ユーザーがスキーマに対して
USAGEを、テーブルまたはビューに対してSELECTを持っていることを確認してください。
同期される新しい行がありません。
- タイムスタンプ列が行の変更時に更新され、UTC を使用しているか、タイムゾーン情報が含まれていることを確認してください。
実行時の権限エラー
- Klaviyo ユーザーとして検証 SQL を再実行します。
- 必要に応じて、付与またはデフォルト権限を再適用してください。
セキュリティとメンテナンス
- サービス ユーザーのパスワードは定期的に、またスタッフ変更後にローテーションしてください。
- Klaviyo ユーザーを上記 2 つのスキーマに制限し、必要な場合にのみ
USAGEを付与します。 - 正確な
GRANTステートメントと許可リストに追加した IP 範囲を記録した簡潔な運用手順書を保管してください。
FAQ
複数の Redshift データベースからインポートできますか?
はい。各データベースで 2 つのスキーマを作成し、それぞれのオブジェクトを個別の同期として接続します。
マテリアライズドビューを使用できますか?
はい。マテリアライズド ビューに対して Klaviyo ユーザーに SELECT を付与します。
付録:シンプルなインポート テーブル用の DDL の例
CREATE TABLE klaviyo_import_from_dwh.profile_base (
external_id VARCHAR(128),
email VARCHAR(320),
phone VARCHAR(32),
first_name VARCHAR(128),
last_name VARCHAR(128),
country VARCHAR(64),
inserted_at TIMESTAMP
);
-- ensure monotonically increasing timestamp on inserts/updates
-- (use your ETL/ELT to set inserted_at = GETDATE() at load time)