ファイルストレージの連携
この記事では、クラウドデータ取り込みのサポートを設定し、S3 から Braze に関連データを同期する方法について説明します。
S3 のクラウドデータインジェスト(CDI) を使用して、AWS アカウントの 1 つ以上の S3 バケットを Braze に直接統合できます。新規ファイルが S3 にパブリッシュされると、メッセージが SQS に投稿され、Braze のクラウドデータ取り込みがそれらの新規ファイルを取り込みます。
クラウドデータ取り込みは、JSON、CSV、Parquet のファイルと、属性、イベント、購入、およびユーザー削除のデータをサポートします。
連携には次のリソースが必要です。
- データストレージ用の S3 バケット
- 新しい通知のSQS キュー
- Braze接続用のIAMロール
Braze の S3 用のクラウドデータ取り込みサポートは現在、早期アクセス段階です。早期アクセスへの参加に興味がある場合は、Braze アカウントマネージャーにお問い合わせください。
AWSの定義
まず、このタスクで使用される用語のいくつかを定義します。
ワード | 定義 |
---|---|
Amazonリソースネーム(ARN) | ARN は、AWS リソースの一意の識別子です。 |
アイデンティティとアクセス管理(IAM) | IAM は、AWS リソースへの安全なコントロールアクセスを可能にするウェブサービスです。このチュートリアルでは、IAMポリシーを作成し、それをIAMロールに割り当てて、S3バケットをBrazeクラウドデータインジェストと統合します。 |
Amazon Simple Queue Service (SQS) | SQS は、分散ソフトウェアシステムとコンポーネントを統合できるホストキューです。 |
AWS でのクラウドデータ取り込みの設定
ステップ 1:ソースバケットの作成
AWS アカウントでデフォルト設定の汎用 S3 バケットを作成します。
デフォルト設定は次のとおりです。
- ACL 無効
- すべてのパブリックアクセスをブロックする
- バケットバージョニングの無効化
- SSE-S3 暗号化
次のステップで同じリージョンに SQS キューを作成するので、バケットを作成したリージョンをメモしておきます。
ステップ2:SQS キューの作成
作成したバケットにオブジェクトが追加されたときに追跡するSQS キューを作成します。ここでは、デフォルト設定設定s を使用します。
このSQS は、バケットを作成したリージョンと同じリージョンに必ず作成してください。
この設定では頻繁に使用するため、ARN とSQS のURL を必ずメモしてください。
ステップ 3:アクセスポリシーの設定
アクセスポリシーを設定するには、詳細オプション を選択します。
次の文をキューのアクセスポリシーに追加します。YOUR-BUCKET-NAME-HERE
をバケット名に、YOUR-SQS-ARN
をSQS キューARN に、YOUR-AWS-ACCOUNT-ID
をAWSのアカウントID に置き換えるように注意してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"Sid": "braze-cdi-s3-sqs-publish",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "SQS:SendMessage",
"Resource": "YOUR-SQS-ARN",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "YOUR-AWS-ACCOUNT-ID"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::YOUR-BUCKET-NAME-HERE"
}
}
}
ステップ 4:S3 バケットへのイベント通知の追加
-
ステップ 1 で作成したバケットで、Properties> Event 通知 s に移動します。
-
設定に名前を付けます。オプションで、ファイルのサブセットのみを Braze で取り込む場合は、対象とするプレフィックスまたはサフィックスを指定します。
-
DestinationでSQSキューを選択し、ステップ 2で作成したSQSのARNを入力します。
ステップ 5: IAM ポリシーの作成
ソースバケットの操作を Braze に許可する IAM ポリシーを作成します。まず、アカウント管理者として AWS 管理コンソールにサインインします。
-
AWS コンソールの [IAM] セクションに移動し、ナビゲーションバーの [ポリシー] を選択してから [ポリシーを作成] を選択します。
-
JSON タブを開き、Policy Document セクションに以下のコード スニペットを入力します。
YOUR-BUCKET-NAME-HERE
をバケット名に、YOUR-SQS-ARN-HERE
をSQS キュー名に置き換えるよう注意してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetObjectAttributes", "s3:GetObject"],
"Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE"]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetObjectAttributes", "s3:GetObject"],
"Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE/*"]
},
{
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:GetQueueUrl",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes"
],
"Resource": "YOUR-SQS-ARN-HERE"
}
]
}
3.入力が終わったら、[ポリシーの確認] を選択します。
- ポリシーに名前と説明を付けて、[ポリシーの作成] を選択します。
ステップ 6: IAM ロールを作成する
AWSの設定を完了するには、IAMロールを作成し、ステップ 4からIAMポリシーをアタッチします。
-
IAM ポリシーを作成したコンソールの同じ [IAM] セクションで、[ロール] > [ロールの作成] に移動します。
-
Braze ダッシュボードから Braze AWS のアカウント ID を取得します。[パートナー連携] > [テクノロジーパートナー] を選択し、[Amazon S3] を選択します。ここには、ロールの作成に必要なアカウントID があります。
-
AWS で、信頼できるエンティティセレクターのタイプとして [別の AWS アカウント] を選択します。Braze のアカウント ID を入力し、[外部 ID が必要] チェックボックスをオンにして、Braze で使用する external ID を入力します。完了したら [次へ] を選択します。
![S3 の [ロールの作成] ページ。このページには、ロール名、ロールの説明、信頼できるエンティティ、ポリシー、および権限境界のフィールドがあります。](/docs/ja/assets/img/create_role_2_another.png) -
ステップ 4 で作成したポリシーをロールにアタッチします。検索バーでポリシーを検索し、ポリシーの横のチェックマークを選択してアタッチします。完了したら [次へ] を選択します。
ロールに名前と説明を付け、[ロールの作成] をクリックします。
- Cloud Data Ingestion 統合を作成するときに使用するために、作成したロールのARN と生成した外部ID をメモしておきます。
Braze でのクラウドデータインジェストの設定
-
新しい連携を作成するには、[データ設定] > [クラウドデータ取り込み] を開き、[新しいデータ同期を作成] を選択して、[ファイルソース] セクションから [S3 インポート]を選択します。
-
AWS の設定プロセスからの情報を入力して新しい同期を作成します。次の項目を指定します。
- ロールの ARN
- External ID
- SQS URL (新しい連携ごとに一意である必要があります)
- バケット名
- フォルダーのパス (オプション)
- 地域
3.連携に名前を付け、この連携のデータ型を選択します。
- アクセスや権限の問題で同期が切れた場合に通知を受け取る連絡先メールアドレスを追加します。オプションで、ユーザーレベルのエラーと同期の成功の通知をオンにします。
5.最後に接続テストを行い、同期を保存します。
必要なファイル形式
クラウドデータ取り込みは、JSON、CSV、およびParquet ファイルをサポートします。それぞれのファイルには、サポートされている1 つ以上の識別子列と、JSON ストリングとしての給与読み込む列が含まれている必要があります。
- ユーザ識別子ソースファイルには、1 つ以上のユーザー 識別子列またはキーを含めることができます。各行には1 つの識別子のみを含める必要がありますが、ソースファイルには複数の識別子型を含めることができます。
EXTERNAL_ID
- 更新対象のユーザーを特定します。これは Braze で使用されているexternal_id
値と一致しなければなりません。ALIAS_NAME
およびALIAS_LABEL
- この 2 列はユーザーエイリアスオブジェクトを作成します。alias_name
は一意の識別子である必要があり、alias_label
はエイリアスのタイプを指定します。ユーザーは、異なるラベルを持つ複数のエイリアスを持つことができますが、alias_label
ごとにalias_name
を 1 つしか持つことができません。BRAZE_ID
- Braze のユーザー識別子。これは Braze SDK によって生成されます。クラウドデータ取り込み経由で Braze ID を使用して新規ユーザーを作成することはできません。新規ユーザーを作成するには、外部ユーザー ID またはユーザーエイリアスを指定します。EMAIL
- ユーザーのメールアドレス。同じメールアドレスを持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先されて更新されます。メールと電話の両方が指定された場合は、メールをプライマリ識別子として使用します。PHONE
- ユーザーのメールアドレス。同じ電話番号を持つプロファイルが複数存在する場合、最後に更新されたプロファイルが優先されて更新されます。
PAYLOAD
- Braze 内のユーザーと同期するフィールドの JSON 文字列。
データウェアハウス ソースとは異なり、UPDATED_AT
列は必須でもサポートでもありません。
S3 ソースバケットに追加するファイルは、512MB を超えることはできません。512MBを超えるファイルはエラーになり、Brazeに同期されません。
1
2
3
4
5
6
7
{"external_id":"s3-qa-0","payload":"{\"name\": \"GT896\", \"age\": 74, \"subscriber\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}"}
{"external_id":"s3-qa-1","payload":"{\"name\": \"HSCJC\", \"age\": 86, \"subscriber\": false, \"retention\": {\"previous_purchases\": 0, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600824\"}"}
{"external_id":"s3-qa-2","payload":"{\"name\": \"YTMQZ\", \"age\": 43, \"subscriber\": false, \"retention\": {\"previous_purchases\": 23, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600831\"}"}
{"external_id":"s3-qa-3","payload":"{\"name\": \"5P44M\", \"age\": 15, \"subscriber\": true, \"retention\": {\"previous_purchases\": 7, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600838\"}"}
{"external_id":"s3-qa-4","payload":"{\"name\": \"WMYS7\", \"age\": 11, \"subscriber\": true, \"retention\": {\"previous_purchases\": 0, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600844\"}"}
{"external_id":"s3-qa-5","payload":"{\"name\": \"KCBLK\", \"age\": 47, \"subscriber\": true, \"retention\": {\"previous_purchases\": 11, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600850\"}"}
{"external_id":"s3-qa-6","payload":"{\"name\": \"T93MJ\", \"age\": 47, \"subscriber\": true, \"retention\": {\"previous_purchases\": 10, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600856\"}"}
ソースファイルのすべての行に有効なJSONが含まれている必要があります。含まれていない場合、ファイルはスキップされます。
1
2
{"external_id":"s3-qa-0","payload":"{\"app_id\": \"YOUR_APP_ID\", \"name\": \"view-206\", \"time\": \"2024-04-02T14:34:08\", \"properties\": {\"bool_value\": false, \"preceding_event\": \"unsubscribe\", \"important_number\": 206}}"}
{"external_id":"s3-qa-1","payload":"{\"app_id\": \"YOUR_APP_ID\", \"name\": \"view-206\", \"time\": \"2024-04-02T14:34:08\", \"properties\": {\"bool_value\": false, \"preceding_event\": \"unsubscribe\", \"important_number\": 206}}"}
ソースファイルのすべての行に有効なJSONが含まれている必要があります。含まれていない場合、ファイルはスキップされます。
1
2
{"external_id":"s3-qa-0","payload":"{\"app_id\": \"YOUR_APP_ID\", \"product_id\": \"product-11\", \"currency\": \"BSD\", \"price\": 8.511527858335066, \"time\": \"2024-04-02T14:34:08\", \"quantity\": 19, \"properties\": {\"is_a_boolean\": true, \"important_number\": 40, \"preceding_event\": \"click\"}}"}
{"external_id":"s3-qa-1","payload":"{\"app_id\": \"YOUR_APP_ID\", \"product_id\": \"product-11\", \"currency\": \"BSD\", \"price\": 8.511527858335066, \"time\": \"2024-04-02T14:34:08\", \"quantity\": 19, \"properties\": {\"is_a_boolean\": true, \"important_number\": 40, \"preceding_event\": \"click\"}}"}
ソースファイルのすべての行に有効なJSONが含まれている必要があります。含まれていない場合、ファイルはスキップされます。
external_id,payload
s3-qa-load-0-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""SNXIM"", ""age"": 54, ""subscriber"": true, ""retention"": {""previous_purchases"": 19, ""vip"": true}, ""last_visit"": ""2023-08-08T16:03:26.598806""}"
s3-qa-load-1-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""0J747"", ""age"": 73, ""subscriber"": false, ""retention"": {""previous_purchases"": 22, ""vip"": false}, ""last_visit"": ""2023-08-08T16:03:26.598816""}"
s3-qa-load-2-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""EP1U0"", ""age"": 99, ""subscriber"": false, ""retention"": {""previous_purchases"": 23, ""vip"": false}, ""last_visit"": ""2023-08-08T16:03:26.598822""}"
サポートされているすべてのファイルタイプの例については、braze-examplesのサンプルファイルを参照してください。