Klaviyo 및 Redshift 연결
클라비요 고급 데이터 플랫폼은 Klaviyo의 표준 마케팅 애플리케이션에 포함되어 있지 않으며, 관련 기능에 액세스하려면 구독이 필요합니다. 이 요금제를 구매하는 방법을 알아보려면 결제 가이드를 참조하세요.
개요
이 가이드는 Redshift 관리자가 Klaviyo 에 대한 Amazon Redshift 준비, 필요한 최소 액세스 권한 부여, 일정에 따라 프로필 데이터를 가져올 수 있도록 연결을 완료하는 과정을 안내합니다. 방법을 배우게 됩니다:
-
KLAVIYO_TMP및KLAVIYO_IMPORT_FROM_DWH스키마 생성 - 다음에 대한 전용 서비스 사용자 만들기 Klaviyo
- 최소 권한 권한 부여
- (선택 사항) 권한 및 연결 유효성 검사
- Redshift를 Klaviyo 에 연결하고 동기화 만들기 시작하기
지원되는 개체 및 테이블 구조에 대한 모범 사례를 포함하여 데이터 웨어하우스 가져오기 작동 방식에 대한 배경 지식은 Klaviyo에서 데이터 웨어하우스 가져오기 이해를 참조하세요.
필수 스키마 만들기필수 스키마 만들기
Redshift가 Klaviyo 에 사용할 데이터베이스에 두 개의 스키마를 생성합니다:
-- Redshift DB 관리자 또는 역할로 실행 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 전용 데이터베이스 사용자를 만듭니다.
-- 자신의 이름과 강력한 비밀번호로 바꾸기 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) 임시 테이블 허용 GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role; -- 2) 스테이징 스키마에 대한 권한 Klaviyo 관리 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) 가져오기 스키마에 대한 읽기 전용 액세스 권한 부여 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; -- 향후 새 테이블에 대한 액세스 권한을 부여하는 것을 잊지 마세요 -- 3a) 특정 뷰에 SELECT 권한을 부여합니다(필요에 따라 반복) GRANT SELECT ON VIEW klaviyo_import_from_dwh.예제_보기_이름 TO 역할 klaviyo_data_transfer_role;(선택 사항) 설정 확인
(선택 사항) 설정 확인
Klaviyo 사용자로 몇 가지 간단한 검사를 실행하여 보조금이 올바른지 확인합니다.
-- 대상 데이터베이스로 전환 SET search_path TO klaviyo_tmp; -- 4.1 KLAVIYO_TMP에서 생성/읽기 검증 CREATE TABLE IF NOT EXISTS permission_check (id INT); INSERT INTO permission_check VALUES (1); SELECT COUNT(*) FROM permission_check; -- 예상 1 DROP TABLE permission_check; -- 4.2 가져오기 테이블의 가시성 확인 SET search_path TO klaviyo_import_from_dwh; SELECT tablename FROM pg_table_def WHERE schemaname = 'klaviyo_import_from_dwh' LIMIT 25; -- 4.3 소스 테이블에서 SELECT 확인 또는 조회 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가져오기 테이블 준비(구조 & performance)
가져오기 테이블 준비(구조 & performance)
정확하고 효율적인 증분 동기화를 위해 가져오려는 모든 테이블이 이러한 규칙을 따르는지 확인하세요:
-
타임스탬프 열입니다: 행별 생성 또는 마지막 업데이트 타임스탬프(예:
삽입된_일,업데이트된_일,수정된_일)를 포함합니다. - 단조로운 업데이트: 행이 변경될 때마다 타임스탬프가 증가해야 합니다.
- 표준 시간대: 표준 시간대: UTC를 사용하거나 표준 시간대 정보를 포함합니다. 누락된 경우 Klaviyo 는 UTC로 가정합니다.
-
일관된 식별자: 가져오기 테이블에서 동일한 프로필 식별자
(이메일,전화,external_id등)를 사용하여 중복을 방지하세요. - 동의 형식: 동의 데이터를 동기화할 때는 파일 또는 SFTP 업로드에 사용된 것과 동일한 유효한 값/형식을 따르세요.
- 성능: 효율적인 증분 읽기를 위해 타임스탬프 열의 정렬 또는 dist 키를 고려하세요.
-
뷰: 테이블 또는 뷰에서 가져오기: Klaviyo 사용자에 대해 간단한
SELECT가작동하는 한 테이블 또는 뷰에서 가져올 수 있습니다.
Redshift를 다음에 연결 Klaviyo
- Klaviyo 에서 왼쪽 사이드바를 열고 고급 → 동기화로 이동합니다.
- 동기화 생성을 클릭합니다.
- 데이터 웨어하우스에서 데이터 가져오기를 선택합니다.
- Redshift를 선택합니다.
- Redshift에 연결을 클릭하고 다음 연결 세부 정보를 입력합니다:
| 필드 | 설명 |
|---|---|
| 호스트 | Redshift 엔드포인트( 예: example-cluster.abc123.us-east-1.redshift.amazonaws.com) |
| 포트 | 5439(또는 사용자 지정 포트) |
| 데이터베이스 |
klaviyo_tmp 및 klaviyo_import_from_dwh가포함된 데이터베이스
|
| 사용자 이름/비밀번호 | Klaviyo 서비스 사용자 자격 증명 |
연결하면 Klaviyo 에서 자격 증명과 네트워크 연결을 테스트합니다. 확인이 완료되면 동기화를 생성하고 klaviyo_import_from_dwh에서 테이블 또는 뷰를 선택할 수 있습니다.
문제 해결 팁
연결 테스트 실패
- 방화벽 또는 보안 그룹 규칙이 Klaviyo의 IP가 올바른 포트에서 Redshift 엔드포인트에 도달할 수 있도록 허용하는지 확인합니다.
- SSL 설정과 올바른 엔드포인트(클러스터 대 워크그룹), 지역 및 포트를 사용하고 있는지 확인합니다.
테이블이 표시되지 않음
- 테이블이
klaviyo_import_from_dwh에있는지 확인합니다. - Klaviyo 사용자에게 스키마에
USAGE가있고 테이블 또는 뷰에SELECT가있는지 확인합니다.
새 행 동기화 없음
- 행 변경 시 타임스탬프 열이 업데이트되고 UTC를 사용하거나 표준 시간대 정보를 포함하는지 확인합니다.
런타임 시 권한 오류
- Klaviyo 사용자로 유효성 검사 SQL을 다시 실행합니다.
- 필요한 경우 부여 또는 기본 권한을 다시 적용합니다.
보안 및 유지 관리
- 서비스 사용자 비밀번호는 정기적으로 그리고 직원이 바뀔 때마다 교체하세요.
- Klaviyo 사용자를 위의 두 스키마로 제한하고 필요한 경우에만
사용권한을 부여하세요. - 정확한
GRANT문과 허용 목록에 포함된 IP 범위를 문서화한 간단한 런북을 보관하세요.
자주 묻는 질문
여러 Redshift 데이터베이스에서 가져올 수 있나요?
예, 그렇습니다. 각 데이터베이스에 두 개의 스키마를 만들고 각 데이터베이스의 개체를 별도의 동기화로 연결합니다.
구체화된 뷰를 사용할 수 있나요?
예, 그렇습니다. 구체화된 보기에서 SELECT를 Klaviyo 사용자에게 부여합니다.
부록: 간단한 가져오기 테이블에 대한 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 ); -- 삽입/업데이트 시 단조롭게 증가하는 타임스탬프 보장 -- (ETL/ELT를 사용하여 로드 시 삽입_at = GETDATE() 설정)