メインコンテンツへスキップ

概要

OneSignal + Amazon Redshift統合により、Redshiftデータウェアハウスからカスタムイベントを同期して、ユーザーの行動に基づいて自動化されたメッセージングキャンペーンとJourneysをトリガーできます。 Amazon Redshiftは、既存のビジネスインテリジェンスツールを使用して大量のデータを費用対効果の高い方法で分析できる、フルマネージドのペタバイト規模のデータウェアハウスサービスです。

要件

Amazon Redshift

  • ネットワークアクセス権を持つRedshiftクラスタ
  • 適切な権限を持つデータベースユーザー
  • 構造化された行動データを含むイベントテーブル
  • OneSignalからRedshiftクラスタへのネットワーク接続

セットアップ

1

OneSignal用の専用ユーザーを作成する

適切な権限を持つ専用ユーザーアカウントを作成します:
-- 強力なパスワードを持つOneSignalユーザーを作成
CREATE USER CENSUS WITH PASSWORD '<強力で一意のパスワード>';

-- 同期状態用のプライベート簿記スキーマを作成(読み取り専用モードの場合はスキップ)
CREATE SCHEMA CENSUS;

-- 簿記スキーマへのフルアクセスを許可(読み取り専用モードの場合はスキップ)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;

-- 簿記スキーマ内の既存オブジェクトへのアクセスを確保(読み取り専用モードの場合はスキップ)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
2

イベントデータへの権限を許可する

イベントデータを含むスキーマへの読み取りアクセスを提供します:
-- スキーマアクセスを許可(イベントデータを持つ各スキーマごとに繰り返す)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

-- 既存テーブルへの読み取りアクセスを許可
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

-- 将来のテーブルへの読み取りアクセスを許可
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

-- 関数への実行権限を許可
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
3

ネットワークアクセスを設定する

RedshiftセキュリティグループにOneSignalのIPアドレスを追加します。Redshiftはデフォルトで外部アクセスを防ぎます。お住まいの地域のOneSignal IPアドレスは、統合設定で確認できます。詳細については、AWS Redshift Help Centerをご覧ください。
4

OneSignalに接続する

In OneSignal, go to Data > Integrations and click Add Integration.
  1. リストからAmazon Redshiftを選択します
  2. 接続の詳細を入力します:
    • Host:Redshiftクラスタエンドポイント
    • Port:通常は5439
    • Database:データベース名
    • UsernameCENSUS
    • Password:作成したパスワード
  3. 接続をテストします
  4. イベントデータを含むテーブルを設定します

Event data mapping

Map your to OneSignal’s custom events format:
OneSignal FieldDescriptionRequired
nameevent_nameEvent identifierYes
external_iduser_idUser identifierYes
timestampevent_timestampWhen event occurredNo
propertiesevent_dataNo

イベントテーブルスキーマの例

-- Redshiftイベントテーブルの例
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1),
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT GETDATE(),
    event_data SUPER,
    session_id VARCHAR(255),
    created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);

SQLクエリモード

カスタムSQLクエリを記述してイベントデータを変換します:
-- 例:最近の高価値イベント
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETDATE())
    AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;

dbt統合

Redshiftでdbtを使用している場合は、各dbt実行後にOneSignalがアクセスを保持することを確認してください:

オプション1:きめ細かい権限

dbtプロジェクトにpost-hookを追加して、各モデルのビルド後にアクセスを許可します:
-- dbtモデル内
{{ config(
    post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}

オプション2:デフォルト権限(推奨)

dbt本番ユーザーのデフォルト権限を許可します:
-- Redshiftスーパーユーザーが実行する必要があります
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;

高度なネットワーク設定

SSHトンネルのセットアップ

プライベートネットワーク上のRedshiftクラスタの場合:
  1. SSHユーザーを作成:SSHホストで専用ユーザーをセットアップします
  2. トンネルを設定:OneSignal統合設定で「Use SSH Tunnel」を有効にします
  3. キーペアをインストール:OneSignalの公開鍵を~/.ssh/authorized_keysに追加します
  4. 接続をテスト:トンネル接続を検証します

VPCデプロイメント

AWS VPC内のRedshiftの場合: OneSignalは効率的なバルクデータ抽出のためにUNLOADコマンドを使用します。VPCデプロイメントには、RedshiftがS3と通信できるようにするためのS3 VPCエンドポイントが必要です。 S3 VPCエンドポイントのセットアップ:
  1. AWSコンソールでVPCサービスに移動します
  2. S3サービス用のVPCエンドポイントを作成します
  3. Redshiftサブネットと関連付けます
  4. ルーティングテーブルを設定します

パフォーマンスの最適化

ディストリビューションキーとソートキー

分析ワークロード用にイベントテーブルを最適化します:
-- ユーザー中心のクエリ用にuser_idで分散
CREATE TABLE analytics.user_events (
    -- 列
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);

カラムナストレージ

分析のためにRedshiftのカラムナストレージを活用します:
  • 圧縮:Redshiftは自動的に列を圧縮します
  • ゾーンマップ:ソートされたデータでクエリパフォーマンスを向上させます
  • 列指向:イベントデータの分析クエリに効率的です

制限事項

  • 複数のスキーマには個別の権限付与が必要です
  • クロススキーマテーブルを参照するビューには追加の権限が必要です
  • 複雑なストアドプロシージャアクセスには追加のセットアップが必要な場合があります
  • VPCデプロイメントにはS3 VPCエンドポイント設定が必要です

FAQ

OneSignalは大規模なイベントデータセットをどのように処理しますか?

OneSignalは、大規模な分析ワークロード用に最適化されているRedshiftのUNLOADコマンドを使用して、効率的なバルクデータ抽出を行います。

読み取り専用モードを使用できますか?

はい、よりシンプルなセットアップを希望し、OneSignalによるテーブル作成を許可できない場合は、簿記スキーマの作成をスキップして読み取り専用モードを使用できます。

dbt互換性についてはどうですか?

OneSignalは、dbt実行後に権限が維持されるように特定のdbt統合パターンを提供しています。セットアップに応じて、post-hookまたはデフォルト権限を使用してください。