コンテンツにスキップ

Amazon Redshiftのクラウドデータ取り込み

このページでは、クラウドデータ取り込み (CDI) を使用してAmazon RedshiftからBrazeにデータを同期するために必要なすべての情報を説明します。Redshiftで作成するリソース、ソースを接続してBrazeで同期を作成する方法、データタイプごとのソーステーブル、Redshift固有のトラブルシューティングを扱います。

設定の概要

  1. Redshift インスタンスで、Braze に同期するテーブルまたはビューを設定します。
  2. サポートされている認証方法のいずれかを使用して Braze 用の Redshift ユーザーを作成し、テーブルへのアクセス権を付与します。
  3. 同期する Redshift テーブルへの Braze のアクセスが許可されていることを確認します。Braze はインターネット経由で Redshift に接続します。
  4. Braze ダッシュボードで新しいソースと同期を作成します。
  5. 統合を検証し、同期を開始します。

ステップ1: ソーステーブルを設定する

このセクションの手順では、PAYLOAD 列を持つテーブルを作成します。代わりに データ定義ステップでデータを整形する場合は、既存のテーブルまたはビューを使用できます。その場合はテーブル作成ステップをスキップし、同期したいテーブルまたはビューへの読み取りアクセス権を Braze に付与してください。各オプションの比較については、データ定義オプションを選択するを参照してください。

データベース、スキーマ、テーブルには任意の名前を付けられますが、列名は以下のタブの定義と一致させる必要があります。テーブルの代わりに、ビューまたはマテリアライズドビューを使用することもできます。

必要に応じて、ソーステーブルを格納するための新しいデータベースとスキーマを設定します。

CREATE DATABASE BRAZE_CLOUD_PRODUCTION;
CREATE SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION;

同期したいデータタイプのタブを選択してください。

ユーザー属性、カスタムイベント、購入イベントはいずれも同じ形式のソーステーブルを使用します。異なるのは PAYLOAD の内容のみです。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_ATTRIBUTES_SYNC (
   updated_at timestamptz default sysdate,
   --at least one of external_id, alias_name and alias_label, or braze_id is required
   external_id varchar,
   --if using user alias, both alias_name and alias_label are required
   alias_label varchar,
   alias_name varchar,
   --braze_id can only be used to update existing users created through the Braze SDK
   braze_id varchar,
   --If you include both email and phone, email is used as the primary identifier
   email varchar,
   phone varchar,
   payload varchar(max)
)
  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Brazeは、UPDATED_AT が最後に同期された値より後の行を同期します。境界となるタイムスタンプとまったく同じ時刻の行は、新しい行が同じタイムスタンプを共有している場合、再同期されることがあります。
  • ユーザー識別子列 - テーブルには、1つ以上のユーザー識別子列を含めることができます。各行には識別子を1つだけ含めてください (external_id、alias_name と alias_label の組み合わせ、braze_id、email、phone のいずれか)。ソーステーブルには、1つ、2つ、3つ、4つ、または5つすべての識別子タイプの列を含めることができます。
    • EXTERNAL_ID - 更新するユーザーを識別します。Brazeで使用されている external_id の値と一致している必要があります。
    • ALIAS_NAME と ALIAS_LABEL - この2つの列でユーザーエイリアスオブジェクトを作成します。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、alias_label ごとに持てる alias_name は1つだけです。
    • BRAZE_ID - Brazeのユーザー識別子です。これはBraze SDKによって生成されるもので、Cloud Data Ingestionを通じてBraze IDを使用して新しいユーザーを作成することはできません。新しいユーザーを作成するには、外部ユーザー IDまたはユーザーエイリアスを指定してください。
    • EMAIL - ユーザーのメールアドレスです。同じメールアドレスを持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先的に更新されます。メールと電話番号の両方を含める場合は、メールがプライマリ識別子として使用されます。
    • PHONE - ユーザーの電話番号です。同じ電話番号を持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先的に更新されます。
  • PAYLOAD - Braze のユーザーに同期したいフィールドの JSON 文字列です。

属性の同期では、PAYLOAD はユーザー属性オブジェクトの形式に従います。階層化カスタム属性、オブジェクトの配列、購読グループのステータスを含めることができます。ペイロードの例については、テーブル設定を参照してください。

カスタムイベントは、ユーザー属性と同じソーステーブルを使用します。User attributes タブに示すテーブルを作成し、PAYLOAD にイベントオブジェクトを入力します。

イベントを同期するには、イベント名が必須です。time フィールドは ISO 8601 文字列、または yyyy-MM-dd'T'HH:mm:ss:SSSZ 形式で指定します。time フィールドがない場合、Braze は UPDATED_AT 列の値をイベント時刻として使用します。app_id や properties などのその他のフィールドは任意です。

1行につき1つのイベントを同期できます。

{
    "app_id" : "your-app-id",
    "name" : "rented_movie",
    "time" : "2013-07-16T19:20:45+01:00",
    "properties": {
        "movie": "The Sad Egg",
        "director": "Alex Smith"
    }
}

購入イベントは、ユーザー属性と同じソーステーブルを使用します。User attributes タブに示すテーブルを作成し、PAYLOAD に購入オブジェクトを入力します。

購入イベントを同期するには、product_id、currency、price が必須です。任意の time フィールドは ISO 8601 文字列、または yyyy-MM-dd'T'HH:mm:ss:SSSZ 形式で指定します。time フィールドがない場合、Braze は UPDATED_AT 列の値をイベント時刻として使用します。app_id、quantity、properties などのその他のフィールドは任意です。

1行につき1つの購入イベントを同期できます。

{
    "app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
    "product_id" : "Completed Order",
    "currency" : "USD",
    "price" : 219.98,
    "time" : "2013-07-16T19:20:30+01:00",
    "properties" : {
        "products" : [ { "name": "Monitor", "category": "Gaming", "product_amount": 19.99 },
        { "name": "Gaming Keyboard", "category": "Gaming ", "product_amount": 199.99 }
        ]
    }
}

カタログの同期を作成する前に、Braze で同期先のカタログを作成してください。カタログのワークフロー全体については、カタログデータの同期と削除を参照してください。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC (
   updated_at timestamptz default sysdate not null,
   --ID of the catalog item to be created or updated
   id varchar not null,
   --Catalog fields and values that should be added or updated
   payload varchar(max),
   --The catalog item associated with this ID should be deleted
   deleted boolean
)

他のソーステーブルと同様に、このテーブルへのアクセス権を Braze ユーザーに付与します。

GRANT SELECT ON TABLE CATALOGS_SYNC TO braze_user;

統合の名前は、Braze で作成したカタログの名前と完全に一致している必要があります。

同期を実行するたびにソーステーブルが完全に更新されるよう、カタログデータからビューを作成することをお勧めします。たとえば、product_id と3つの追加属性を持つ商品データのテーブル (product_catalog_1) がある場合、次のように同期できます。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CATALOGS_SYNC AS
SELECT
    CURRENT_TIMESTAMP as UPDATED_AT,
    Product_id as id,
    JSON_SERIALIZE(
        OBJECT (
            'attribute_1',
            attribute_1,
            'attribute_2',
            attribute_2,
            'attribute_3',
            attribute_3)
    ) as PAYLOAD FROM "product_catalog_1";

データオブジェクトの同期を作成する前に、Braze でデータオブジェクトタイプとそのフィールドを作成してください。ワークフロー全体については、データオブジェクトを同期するを参照してください。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNTS_SYNC (
   updated_at timestamptz default sysdate not null,
   object_id varchar not null,
   payload varchar(max) not null,
   --the data object record associated with this object_id should be deleted
   deleted boolean
)
フィールド名 タイプ モード
UPDATED_AT timestamptz REQUIRED
OBJECT_ID varchar REQUIRED
PAYLOAD varchar(max) REQUIRED
DELETED boolean NULLABLE
  • UPDATED_AT - この行がテーブルで更新された時刻、またはテーブルに追加された時刻です。Brazeは、UPDATED_ATが最後に同期された値より後の行を同期します。境界のタイムスタンプとまったく同じ時刻の行は、新しい行が同じタイムスタンプを持つ場合に再同期されることがあります。
  • OBJECT_ID - データオブジェクトレコードの識別子です。この値は、このデータオブジェクトタイプに対してBrazeで使用されているobject_idの値と一致する必要があります。
  • PAYLOAD - 同期するフィールドと値のJSON文字列です。各キーは、Brazeのデータオブジェクトタイプで定義されたフィールドと一致する必要があります。
  • DELETED - trueの場合、Brazeはレコードを更新する代わりに削除します。作成または更新する行では、この値をnullまたはfalseのままにしてください。

PAYLOAD内のフィールド名では大文字と小文字が区別されます。NAMEという名前のキーは、nameという名前のフィールドとは一致しません。大文字と小文字が一致しない場合、検証ではそのキーが未定義のフィールドとしてレポートされ、本来値を入力する予定だったフィールドが欠落しているとレポートされます。キーには、データ設定 > データオブジェクトに表示されるフィールド名とまったく同じ名前を付けてください。

Brazeは同期中にデータオブジェクトタイプを作成または変更しません。同期を作成する前に、Brazeでタイプとそのすべてのフィールドを定義してください。後からフィールドを追加する場合は、まずタイプにフィールドを追加してから、ソーステーブルまたはクエリを更新してください。

たとえば、name フィールドと team_id フィールドを持つアカウントの PAYLOAD 値は次のようになります。

{"name": "Acme Corp", "team_id": 42}

このテーブルへのアクセス権を Braze ユーザーに付与します。

GRANT SELECT ON TABLE ACCOUNTS_SYNC TO braze_user;

データ定義ステップで データオブジェクトデータタイプを選択し、データオブジェクトタイプを選択します。データオブジェクトの同期は テーブルと SQL をサポートしています。

この同期を使用すると、ユーザーをデータオブジェクトのレコードに関連付けることができます。たとえば、ユーザーを所属するアカウントに紐づけることができます。同期する前に、Braze でリレーションシップを作成してください。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNT_USERS_SYNC (
   updated_at timestamptz default sysdate not null,
   object_id varchar not null,
   --at least one of external_id, alias_name and alias_label, email, or phone is required
   external_id varchar,
   --if using user alias, both alias_name and alias_label are required
   alias_name varchar,
   alias_label varchar,
   email varchar,
   phone varchar,
   payload varchar(max),
   deleted boolean
)
フィールド名 タイプ モード
UPDATED_AT timestamptz REQUIRED
OBJECT_ID varchar REQUIRED
EXTERNAL_ID varchar NULLABLE
ALIAS_NAME varchar NULLABLE
ALIAS_LABEL varchar NULLABLE
EMAIL varchar NULLABLE
PHONE varchar NULLABLE
PAYLOAD varchar(max) NULLABLE
DELETED boolean NULLABLE

各行には、OBJECT_ID に加えて、少なくとも1つのユーザー識別子 (EXTERNAL_ID、ALIAS_NAME と ALIAS_LABEL の組み合わせ、EMAIL、または PHONE) が必要です。リレーションシップ自体に定義されたフィールドには PAYLOAD を使用します。

  • UPDATED_AT - この行がテーブルで更新された時刻、またはテーブルに追加された時刻です。Brazeは、UPDATED_ATが最後に同期された値より後の行を同期します。境界のタイムスタンプとまったく同じ時刻の行は、新しい行が同じタイムスタンプを持つ場合に再同期されることがあります。
  • OBJECT_ID - データオブジェクトレコードの識別子です。この値は、このデータオブジェクトタイプに対してBrazeで使用されているobject_idの値と一致する必要があります。
  • PAYLOAD - 同期するフィールドと値のJSON文字列です。各キーは、Brazeのデータオブジェクトタイプで定義されたフィールドと一致する必要があります。
  • DELETED - trueの場合、Brazeはレコードを更新する代わりに削除します。作成または更新する行では、この値をnullまたはfalseのままにしてください。

PAYLOAD内のフィールド名では大文字と小文字が区別されます。NAMEという名前のキーは、nameという名前のフィールドとは一致しません。大文字と小文字が一致しない場合、検証ではそのキーが未定義のフィールドとしてレポートされ、本来値を入力する予定だったフィールドが欠落しているとレポートされます。キーには、データ設定 > データオブジェクトに表示されるフィールド名とまったく同じ名前を付けてください。

Brazeは同期中にデータオブジェクトタイプを作成または変更しません。同期を作成する前に、Brazeでタイプとそのすべてのフィールドを定義してください。後からフィールドを追加する場合は、まずタイプにフィールドを追加してから、ソーステーブルまたはクエリを更新してください。

データ定義ステップで データオブジェクトのユーザーリレーションシップデータタイプを選択し、User (Account-User) などの リレーションシップ名を選択します。

この同期を使用すると、データオブジェクトのレコード同士を関連付けることができます。たとえば、アカウントを親アカウントに紐づけることができます。同期する前に、Braze でリレーションシップを作成してください。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.ACCOUNT_SUBACCOUNTS_SYNC (
   updated_at timestamptz default sysdate not null,
   object_id varchar not null,
   related_object_id varchar not null,
   payload varchar(max),
   deleted boolean
)
フィールド名 タイプ モード
UPDATED_AT timestamptz REQUIRED
OBJECT_ID varchar REQUIRED
RELATED_OBJECT_ID varchar REQUIRED
PAYLOAD varchar(max) NULLABLE
DELETED boolean NULLABLE

OBJECT_ID はリレーションシップの起点となるレコード、RELATED_OBJECT_ID はリレーションシップの参照先となるレコードです。どちらもすべての行で必須です。リレーションシップ自体に定義されたフィールドには PAYLOAD を使用します。

  • UPDATED_AT - この行がテーブルで更新された時刻、またはテーブルに追加された時刻です。Brazeは、UPDATED_ATが最後に同期された値より後の行を同期します。境界のタイムスタンプとまったく同じ時刻の行は、新しい行が同じタイムスタンプを持つ場合に再同期されることがあります。
  • OBJECT_ID - データオブジェクトレコードの識別子です。この値は、このデータオブジェクトタイプに対してBrazeで使用されているobject_idの値と一致する必要があります。
  • PAYLOAD - 同期するフィールドと値のJSON文字列です。各キーは、Brazeのデータオブジェクトタイプで定義されたフィールドと一致する必要があります。
  • DELETED - trueの場合、Brazeはレコードを更新する代わりに削除します。作成または更新する行では、この値をnullまたはfalseのままにしてください。

PAYLOAD内のフィールド名では大文字と小文字が区別されます。NAMEという名前のキーは、nameという名前のフィールドとは一致しません。大文字と小文字が一致しない場合、検証ではそのキーが未定義のフィールドとしてレポートされ、本来値を入力する予定だったフィールドが欠落しているとレポートされます。キーには、データ設定 > データオブジェクトに表示されるフィールド名とまったく同じ名前を付けてください。

Brazeは同期中にデータオブジェクトタイプを作成または変更しません。同期を作成する前に、Brazeでタイプとそのすべてのフィールドを定義してください。後からフィールドを追加する場合は、まずタイプにフィールドを追加してから、ソーステーブルまたはクエリを更新してください。

データ定義ステップで データオブジェクトのリレーションシップデータタイプを選択し、Subaccount (Account-Account) などの リレーションシップ名を選択します。

キャンバストリガーは、ゼロコピーパーソナライゼーションを実現します。同期先のキャンバスの設定と考慮事項については、ゼロコピーパーソナライゼーションを参照してください。

CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.CANVAS_TRIGGERS_SYNC (
    updated_at timestamptz default sysdate not null,
    --at least one of external_id or alias_name and alias_label is required
    external_id varchar not null,
    --if using user alias, both alias_name and alias_label are required
    alias_label varchar,
    alias_name varchar,
    properties varchar(max)
 );

キャンバストリガーの同期は、他のユーザーデータの同期と次の3点で異なります。

  • external ID またはユーザーエイリアスの識別子のみがサポートされています。メールアドレスと電話番号は識別子としてサポートされていません。
  • 同期できるのは既存の Braze ユーザーのみです。新しいユーザーを作成することはできません。
  • PAYLOAD 列の代わりに PROPERTIES 列を使用します。これは、パーソナライゼーション用のキャンバスエントリプロパティとして使用するフィールドの JSON 文字列です。

キャンバストリガーテーブルには、次の列が必要です。

  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Brazeは、UPDATED_AT が最後に同期された値よりも後の行を同期します。境界となるタイムスタンプとまったく同じタイムスタンプを持つ行は、新しい行が同じタイムスタンプを持つ場合に再同期されることがあります。
  • ユーザー識別子の列として、EXTERNAL_ID、または ALIAS_NAME と ALIAS_LABEL のいずれか。これらの列は、キャンバスメッセージングをトリガーする対象のユーザーを識別します。
    • EXTERNAL_ID - キャンバスにエントリさせるユーザーを識別します。この値は、Brazeで使用される external_id の値と一致する必要があります。
    • ALIAS_NAME と ALIAS_LABEL - これらの列はユーザーエイリアスオブジェクトを作成します。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、1つの alias_label につき alias_name は1つのみです。
  • PROPERTIES - キャンバスでパーソナライゼーションプロパティとして使用できるようにするフィールドの JSON 文字列です。ユーザー固有の情報を含める必要があります。

このテーブルへのアクセス権を Braze ユーザーに付与します。

GRANT SELECT ON TABLE CANVAS_TRIGGERS_SYNC TO braze_user;

開始するには、新しい同期を作成する際に キャンバストリガーデータタイプを選択します。

ユーザー削除用のソーステーブルには、1つ以上のユーザー識別子タイプと UPDATED_AT タイムスタンプを含める必要があります。ユーザー削除データでは、ペイロード列はサポートされていません。

  • UPDATED_AT - この行がテーブルで更新または追加された時刻です。Braze は、UPDATED_AT が最後に同期された値よりも後の行を同期します。新しい行が境界のタイムスタンプとまったく同じタイムスタンプを持つ場合、その境界タイムスタンプの行が再同期されることがあります。
  • ユーザー識別子列 - 各行には識別子を1つだけ含める必要があります。external_id、alias_name と alias_label の組み合わせ、または braze_id のいずれかです。ソーステーブルには、1つ、2つ、または3つすべての識別子タイプの列を含めることができます。
    • EXTERNAL_ID - 更新するユーザーを識別します。これは、Braze で使用されている external_id の値と一致する必要があります。
    • ALIAS_NAME と ALIAS_LABEL - これら2つの列によってユーザーエイリアスオブジェクトが作成されます。alias_name は一意の識別子である必要があり、alias_label はエイリアスのタイプを指定します。ユーザーは異なるラベルを持つ複数のエイリアスを持つことができますが、alias_label ごとに持てる alias_name は1つだけです。
    • BRAZE_ID - Braze のユーザー識別子です。これは Braze SDKによって生成されるもので、Cloud Data Ingestion を通じて Braze ID を使用して新しいユーザーを作成することはできません。新しいユーザーを作成するには、外部ユーザー ID またはユーザーエイリアスを指定してください。
CREATE TABLE BRAZE_CLOUD_PRODUCTION.INGESTION.USERS_DELETES (
   updated_at timestamptz default sysdate,
   --at least one of external_id, alias_name and alias_label, or braze_id is required
   external_id varchar,
   --if using user alias, both alias_name and alias_label are required
   alias_label varchar,
   alias_name varchar,
   --braze_id can only be used to update existing users created through the Braze SDK
   braze_id varchar
);

統合の実行時に適切なアクションが行われるよう、インポート同期を作成ページで データタイプを ユーザーを削除に設定します。詳細については、クラウドデータ取り込みでユーザーを削除するを参照してください。

ステップ 2: 認証を設定する

Brazeはデータベースユーザーとして Redshiftに接続します。次のいずれかの認証方法でユーザーを作成してください。

方法 Brazeによる認証方法 Brazeで入力する内容
Username and password Braze connects as a Redshift database user with a password. Username and Password

Username and password

BrazeはパスワードをもつデータベースユーザーとしてRedshiftに接続します。Braze用のユーザーを作成してください。

CREATE USER braze_user PASSWORD '{password}';

ユーザー名とパスワードは、ソースを作成する際にBrazeダッシュボードで入力するまで、安全な場所に保管してください。

ステップ 3: ユーザーに権限を付与する

Braze 用に作成したユーザーに、ソーステーブルへのアクセス権を付与します。

GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user;
GRANT SELECT ON TABLE USERS_ATTRIBUTES_SYNC TO braze_user;

これらは、このユーザーに必要な最小限の権限です。複数の CDI 統合を作成する場合は、スキーマに権限を付与するか、グループを使用して権限を管理することをおすすめします。

ステップ 4: Braze IPへのアクセスを許可する

ファイアウォールやその他のネットワークポリシーがある場合は、Redshiftインスタンスへのネットワークアクセスを Brazeに許可する必要があります。RedshiftのURLエンドポイントの例は「example-cluster.ap-northeast-2.redshift.amazonaws.com」です。

重要な注意点:

  • BrazeがRedshift内のデータにアクセスできるよう、セキュリティグループの変更が必要になる場合もあります。
  • 表に記載されているIPと、Redshiftクラスターへのクエリに使用するポート (デフォルトは5439) で、インバウンドトラフィックを明示的に許可してください。インバウンドルールが「すべて許可」に設定されている場合でも、このポートでのRedshift TCP接続を明示的に許可する必要があります。
  • Brazeがクラスターに接続するには、Redshiftクラスターのエンドポイントがパブリックにアクセス可能である必要があります。
    • Redshiftクラスターをパブリックにアクセス可能にしたくない場合は、VPCとEC2インスタンスを設定し、SSHトンネルを使用してRedshiftのデータにアクセスできます。詳細については、AWSナレッジセンターの投稿を参照してください。

Brazeダッシュボードのリージョンに対応する以下のIPからのアクセスを許可してください。

インスタンスUS-01、US-02、US-03、US-04、US-05、US-06、US-07の場合、関連するIPアドレスは次のとおりです。

  • 23.21.118.191
  • 34.206.23.173
  • 50.16.249.9
  • 52.4.160.214
  • 54.87.8.34
  • 54.156.35.251
  • 52.54.89.238
  • 18.205.178.15

インスタンスUS-08の場合、関連するIPアドレスは次のとおりです。

  • 52.151.246.51
  • 52.170.163.182
  • 40.76.166.157
  • 40.76.166.170
  • 40.76.166.167
  • 40.76.166.161
  • 40.76.166.156
  • 40.76.166.166
  • 40.76.166.160
  • 40.88.51.74
  • 52.154.67.17
  • 40.76.166.80
  • 40.76.166.84
  • 40.76.166.85
  • 40.76.166.81
  • 40.76.166.71
  • 40.76.166.144
  • 40.76.166.145

インスタンスUS-10の場合、関連するIPアドレスは次のとおりです。

  • 100.25.232.164
  • 35.168.86.179
  • 52.7.44.117
  • 3.92.153.18
  • 35.172.3.129
  • 50.19.162.19

インスタンスEU-01とEU-02の場合、関連するIPアドレスは次のとおりです。

  • 52.58.142.242
  • 52.29.193.121
  • 35.158.29.228
  • 18.157.135.97
  • 3.123.166.46
  • 3.64.27.36
  • 3.65.88.25
  • 3.68.144.188
  • 3.70.107.88

インスタンスAU-01の場合、関連するIPアドレスは次のとおりです。

  • 13.210.1.145
  • 13.211.70.159
  • 13.238.45.54
  • 52.65.73.167
  • 54.153.242.239
  • 54.206.45.213

インスタンスID-01の場合、関連するIPアドレスは次のとおりです。

  • 108.136.157.246
  • 108.137.30.207
  • 16.78.128.71
  • 16.78.14.134
  • 16.78.162.208
  • 43.218.73.35

インスタンスJP-01の場合、関連するIPアドレスは次のとおりです。

  • 13.159.155.212
  • 54.199.221.241
  • 13.192.23.16
  • 54.250.120.139
  • 18.181.114.232
  • 3.114.38.100

インスタンスKR-01の場合、関連するIPアドレスは次のとおりです。

  • 43.200.215.4
  • 52.79.67.175
  • 52.79.113.60
  • 3.34.212.92
  • 54.116.134.231
  • 3.37.197.225

ステップ5: Braze ダッシュボードで新しいソースを作成する

Braze ダッシュボードで データ設定 > クラウドデータ取り込み > ソース に移動し、データソースを追加 を選択してから Amazon Redshift を選択します。

ステップ5.1: Redshift の接続情報とソーステーブルを追加する

ソースの名前を決め、Redshift の認証情報と設定を入力します。ステップ2で設定した認証方法を選択し、その認証情報を入力します。

プライベートネットワークトンネルを使用している場合は、スライダーをオンにしてトンネル情報を入力します。その後、次のステップに進みます。

ステップ5.2: 接続をテストしてソースに接続する

次に、接続をテスト を選択します。成功したら、残りの設定を完了して ソースに接続 をクリックします。接続に失敗した場合は、問題のトラブルシューティングに役立つエラーメッセージが表示されます。

ステップ6:Brazeダッシュボードで新しい同期を作成する

データ設定 > クラウドデータ取り込み > 同期に移動し、データ同期を作成を選択します。

同期の詳細を設定し、データを定義する

同期の名前を入力します。次に、アクティブなソースと同期データタイプを選択します。続いて、同期モードを選択し、データを定義します。その後、プレビューと検証を選択します。

検証が成功すると、データのプレビューが表示されます。次へ:通知を選択して続行します。検証が失敗した場合は、問題のトラブルシューティングに役立つエラーメッセージが表示されます。

通知設定を追加する

同期エラー通知を受け取る連絡先メールアドレスを入力します。Brazeはこの連絡先情報を使用して、テーブルアクセスの予期しない喪失などの統合エラーに関する通知を送信します。

連絡先メールアドレスには、テーブルの欠落や権限の問題など、グローバルエラーまたは同期レベルのエラーの通知のみが送信されます。行レベルの問題は通知されません。グローバルエラーは、同期の実行を妨げる接続上の重大な問題を示しています。

このような問題には、次のようなものがあります。

  • 接続の問題
  • リソースの不足
  • 権限の問題
  • カタログ階層の容量不足 (カタログ同期のみ)

スケジュールを設定する

最後に、同期を非定期または定期として設定します。

非定期の同期は、ダッシュボードで 今すぐ同期 を選択するか、同期をトリガーするエンドポイントを呼び出したときにのみ実行されます。

定期的な同期は、最短で5分ごと、最長で月1回の間隔で実行できます。デフォルトでは、ダッシュボードで設定できる最短の間隔は15分です。これにより、ウェアハウスのコンピューティングコストとリクエスト量を管理しやすくなります。最短5分ごとに同期するには、Brazeサポートまたはカスタマーサクセスマネージャーにお問い合わせください。Brazeは定期的な同期をUTCでスケジュールします。

同期を実行する

有効化されると、同期は設定時に構成したスケジュールで実行されます。スケジュール外で同期を実行したい場合や最新のデータを取得したい場合は、今すぐ同期を選択します。この実行は、定期的にスケジュールされた今後の同期には影響しません。データの更新時に同期を自動的に開始するには、パイプラインから同期のトリガーエンドポイントを呼び出します。

追加の統合またはユーザーを設定する (オプション)

Brazeでは複数の統合を設定できます。追加の同期を作成する際、同じRedshiftアカウントに接続する場合は既存の認証情報を再利用できます。

複数の統合で同じユーザーを再利用する場合、そのユーザーをすべてのアクティブな同期から削除するまで、Brazeダッシュボードでそのユーザーを削除することはできません。

Redshift を接続ソースとして使用する

接続ソースは、Braze へデータを同期する方法に代わるゼロコピーの選択肢です。Braze は基になるデータをコピーせずに Redshift インスタンスに直接クエリを実行し、CDI セグメントを作成します。概念、制限事項、コストへの影響については、接続ソースを参照してください。

ステップ 1: ユーザーを作成して権限を付与する

ステップ 2: 認証を設定するのいずれかの方法で Braze 用のユーザーを作成します。次に、以下の権限を付与します。

GRANT USAGE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user;
GRANT CREATE ON SCHEMA BRAZE_CLOUD_PRODUCTION.INGESTION to braze_user;
GRANT SELECT ON TABLE USERS_ATTRIBUTES_SYNC TO braze_user;

接続ソースが使用するユーザーを作成します。このユーザーは、CDI セグメントエクステンションで利用可能なテーブルのリストを生成し、ソーステーブルにクエリを実行して新しいセグメントを作成するために使用されます。接続ソースの作成後、Braze はソーススキーマ内でユーザーが利用できるすべてのテーブルの名前と説明を検出します。複数の CDI 統合を作成する場合は、スキーマに権限を付与するか、グループを使用して権限を管理することをお勧めします。

スキーマ内のすべてのテーブルへのアクセス権を付与することも、特定のテーブルにのみ権限を付与することもできます。Braze ロールがアクセスできるテーブルはすべて、CDI セグメントエクステンションでクエリに使用できます。新しいテーブルが作成されたら必ずユーザーにアクセス権を付与するか、ユーザーにデフォルトの権限を設定してください。

Braze でセグメントを更新する前に、CDI セグメントエクステンションのクエリ結果を格納するテーブルを Braze が作成できるよう、create table 権限が必要です。Braze はセグメントごとに一時テーブルを作成します。このテーブルは、Braze がセグメントを更新している間のみ保持されます。

ネットワークアクセスの設定はステップ 4 と同じです。

ステップ 2: Braze で接続ソースを作成する

データ設定 > クラウドデータ取り込み > 接続ソースに移動し、データソースを追加を選択してから、Amazon Redshift を選択します。

ソースの設定で、以下を入力します。

  • 認証情報: Redshift ホスト URL、ポート、および認証方法に応じたフィールド。Username and Passwordを入力します。
  • 構成: データベースとスキーマ

必要に応じて SSH トンネルで接続を有効にし、トンネルホスト、トンネルポート、トンネルユーザー名を入力します。

接続ソースの名前を選択します。この名前は、新しい CDI セグメントエクステンションを作成するときに、利用可能なソースのリストで使用されます。

このソースの最大実行時間を設定します。Braze は、最大実行時間を超えたクエリを自動的に中止します。許可される最大実行時間は 60 分です。実行時間を短くすると、Redshift アカウントで発生するコストを削減できます。この設定は、このソースを通じて実行されるクエリ (このソースを使用する同期や CDI セグメントエクステンションを含む) に適用されます。

ステップ 3: Redshift の構成を完了する

認証情報で SSH トンネルで接続が選択されている場合は、接続をテストステップに表示される RSA 公開キーを控え、SSH トンネルユーザーに追加します。

ユーザーにキーを追加したら、Braze で接続をテストを選択し、完了を選択します。これで接続ソースが作成され、CDI セグメントエクステンションで使用できるようになりました。

Braze では複数の接続ソースを設定できますが、各ソースはそれぞれ異なるスキーマに接続するように構成する必要があります。追加のソースを作成する際、同じ Redshift アカウントに接続する場合は既存の認証情報を再利用できます。

既存の列からペイロードをフォーマットする

各属性を内部で個別の列に保存したい場合は、Brazeとの同期にデータを入力するために、それらの列をJSON文字列に変換する必要があります。Redshiftで次のクエリを使用して、ソース列をCDIフィールドにフォーマットします。

CREATE TABLE "EXAMPLE_USER_DATA"
    (attribute_1 string,
     attribute_2 string,
     attribute_3 number,
     my_user_id string);

SELECT
    CURRENT_TIMESTAMP as UPDATED_AT,
    my_user_id as EXTERNAL_ID,
    JSON_SERIALIZE(
        OBJECT (
            'attribute_1',
            attribute_1,
            'attribute_2',
            attribute_2,
            'yet_another_attribute',
            attribute_3)
    ) as PAYLOAD FROM "EXAMPLE_USER_DATA";

最適化に関するその他のガイダンスについては、クラウドデータ取り込みのベストプラクティスを参照してください。

トラブルシューティング

接続テストの実行が遅い

接続テストはデータウェアハウス上で実行されるため、ウェアハウスの容量を増やすと速度が向上する場合があります。サーバーレス SQL インスタンスを使用すると、ウォームアップ時間が最小限に抑えられ、クエリのスループットが向上しますが、統合コストがやや高くなる可能性があります。

Permission denied for relation {table_name}

このエラーが表示された場合は、次の操作を行います。

  • そのユーザーに、スキーマに対する usage 権限を付与します。
  • そのユーザーに、テーブルに対する select 権限を付与します。

接続作成エラー

このエラーが表示された場合は、Redshift のエンドポイントとポートが正しいことを確認します。

SSH トンネル作成エラー

このエラーが表示された場合は、次の点を確認します。

  • Braze ダッシュボードの公開キーが、SSH トンネリングに使用する EC2 ホストに登録されていること。
  • ユーザー名が正しいこと。
  • SSH トンネルが正しいこと。

無効なスナップショット識別子

接続をテストまたは同期の設定中に Braze が Invalid snapshot identifier エラーを返した場合、ソースオブジェクトのクエリ時に使用されるスナップショット参照を Redshift が解決できていません。

Redshift におけるスナップショットとは、クラスターのある時点でのバックアップです。各スナップショットには一意の識別子があり、Redshift はその識別子を使ってバックアップの状態を参照します。詳しくは、Amazon Redshift snapshots and backups を参照してください。

このエラーは、スナップショットのコピー、復元、レプリケーション関連の操作中など、Braze がソースオブジェクトを検証している間にメタデータが変更された場合に発生することがあります。詳しくは、スナップショットを別の AWS リージョンにコピーするおよびスナップショットからクラスターを復元するを参照してください。

トラブルシューティングの手順は次のとおりです。

  1. クラスターエンドポイント、データベース、スキーマ、オブジェクト名など、Braze のソース設定を確認します。
  2. 同じクエリを Redshift で直接実行し、テーブルまたはビューが読み取り可能で安定していることを確認します。
  3. 実行中のスナップショット、復元、サイズ変更、レプリケーションのアクティビティが完了してから再試行します。
  4. 問題が解決しない場合は、頻繁に変更されるベーステーブルではなく、マテリアライズドビューに対してクエリを実行します。

マテリアライズドビューは、スケジュールに沿って更新できる事前計算済みのクエリ結果を保存するため、CDI 同期での読み取りがより安定する場合があります。詳しくは、Amazon Redshift のマテリアライズドビューを参照してください。

例:

CREATE MATERIALIZED VIEW ingestion.users_attributes_mv AS
SELECT updated_at, external_id, alias_label, alias_name, braze_id, email, phone, payload
FROM ingestion.users_attributes_sync;

REFRESH MATERIALIZED VIEW ingestion.users_attributes_mv;

マテリアライズドビューを作成したら、Braze の CDI 同期のソースオブジェクトとして、ベーステーブルではなくマテリアライズドビューの名前を使用します。

SQL チェックの実行場所

検証チェックは、CDI 統合で使用しているものと同じテーブルまたはビューに対して、Redshift の SQL エディターで直接実行します。Query Editor v2 を使用してください。詳しくは、Using Amazon Redshift Query Editor v2 を参照してください。

New Stuff!