Amazon S3
Amazon S3は、Amazon Web Servicesが提供する高度にスケーラブルなストレージシステムです。

クラウドストレージプロバイダーを切り替える場合は、Brazeカスタマーサクセスマネージャーに連絡し、新しい連携の設定と検証についてサポートを受けてください。
BrazeとAmazon S3の連携には、2つの統合戦略があります。
- Currentsを活用すると、他のプラットフォーム、ツール、ロケーションに接続するまでデータを保存できます。
- ダッシュボードのデータエクスポート(CSVエクスポートやエンゲージメントレポートなど)を使用します。
前提条件
| 要件 | 説明 |
|---|---|
| Amazon S3アカウント | このパートナーシップを活用するには、Amazon S3アカウントが必要です。 |
| 専用のS3バケット | Amazon S3と連携する前に、アプリ用のS3バケットを作成する必要があります。 すでにS3バケットをお持ちの場合でも、権限を制限できるように、Braze専用の新しいバケットを作成することをお勧めします。新しいバケットの作成方法については、以下の手順を参照してください。 |
| Currents | Amazon S3にデータをエクスポートするには、アカウントでBraze Currentsを設定しておく必要があります。メッセージアーカイブのみを設定する場合、Currentsは必要ありません。 |
新しいS3バケットを作成する
アプリ用のバケットを作成するには、以下の手順を実行します。
- Amazon S3コンソールを開き、手順に従ってサインインするか、AWSアカウントを作成します。
- サインイン後、Storage & Content DeliveryカテゴリーからS3を選択します。
- 次の画面でCreate Bucketを選択します。
- プロンプトが表示されたら、バケットを作成し、AWSリージョンを選択します。
Brazeのダッシュボードでは、リージョンを選択または設定することはできません。AWSリージョンは、AWSコンソールでバケットを作成した場所によって決まります。この連携では指定したバケット名にデータが送信され、AWSがリクエストをバケットのリージョンに自動的にルーティングします。コネクターが意図しないリージョン (たとえば、eu-central-1ではなくeu-west-1) に接続しようとする場合は、AWSで目的のリージョンにS3バケットを作成するか、既存のバケットを使用してください。Braze側で変更する必要はありません。

連携
BrazeにはAmazon S3との連携方法が2つあります。1つはBraze Currents用、もう1つはすべてのダッシュボードデータのエクスポート (CSVエクスポートやエンゲージメントレポートなど) 用です。どちらの連携も、2種類の認証または認可方式に対応しています。
AWSシークレットキー認証方式
この認証方式では、シークレットキーとアクセスキーIDが生成されます。これにより、BrazeはAWSアカウントのユーザーとして認証され、バケットにデータを書き込めるようになります。
ステップ1: ユーザーを作成する

メッセージアーカイブのみを設定する場合は、Dashboard Data Export タブの手順に従ってください。
アクセスキーIDとシークレットアクセスキーを取得するには、AWSでIAMユーザーと管理者グループを作成します。
ステップ2: 認証情報を取得する
新しいユーザーを作成したら、Show User Security Credentials を選択して、アクセスキーIDとシークレットアクセスキーを表示します。これらの認証情報は後でBrazeダッシュボードに入力する必要があるため、どこかにメモしておくか、Download Credentials ボタンを選択してください。

ステップ3: ポリシーを作成する
Policies > Get Started > Create Policy に移動して、ユーザーに権限を追加します。次に、Create Your Own Policy を選択します。これにより付与される権限は限定されるため、Brazeは指定したバケットにのみアクセスできます。


CurrentsとDashboard Data Exportでは、それぞれ異なるポリシーが必要です。Brazeのバックエンドがエラー処理を実行できるようにするには、s3:GetObject が必要です。
任意のポリシー名を指定し、Policy Document セクションに次のコードスニペットを入力します。INSERTBUCKETNAME は必ずご自身のバケット名に置き換えてください。これらの権限がないと、連携は認証情報のチェックに失敗し、作成されません。

メッセージアーカイブのみを設定する場合は、Dashboard Data Export タブのコードスニペットを使用してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME/*"]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME"]
},
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME*", "arn:aws:s3:::INSERTBUCKETNAME/", "arn:aws:s3:::INSERTBUCKETNAME"]
}
]
}
ステップ4: ポリシーをアタッチする
新しいポリシーを作成したら、Users に移動して対象のユーザーを選択します。Permissions タブで Attach Policy を選択し、作成した新しいポリシーを選択します。これで、AWS認証情報をBrazeアカウントにリンクする準備が整いました。

ステップ5: BrazeをAWSにリンクする

メッセージアーカイブのみを設定する場合は、Dashboard Data Export タブの手順に従ってください。
Brazeで、パートナー連携 > Currents に移動します。
次に、新しいCurrentを作成、Amazon S3データエクスポートの順に選択します。
Currentに名前を付けます。認証情報セクションで AWS Secret Access Key が選択されていることを確認し、S3アクセスID、AWSシークレットアクセスキー、AWS S3バケット名を所定のフィールドに入力します。
連携エラー通知の連絡先メールアドレスを入力します。認証情報の問題や接続の問題など、連携でエラーが発生した場合、Brazeはこのアドレスに通知を送信します。適切な担当者がアラートを受け取れるようにするため、配布リストまたはグループメールアドレスを使用してください。


AWSアクセスキーIDとシークレットアクセスキーは常に最新の状態に保ってください。コネクターの認証情報の有効期限が切れると、コネクターはイベントの送信を停止します。この状態が 5日以上続くと、コネクターのイベントは破棄され、データは完全に失われます。
必要に応じて、次のカスタマイズを追加することもできます。
- フォルダーパス: デフォルトは
currentsです。このフォルダーが存在しない場合は、Brazeが自動的に作成します。 - サーバー側、保存時のAES-256暗号化: デフォルトはオフで、
x-amz-server-side-encryptionヘッダーが含まれます。
Currentを起動を選択して続行します。
認証情報が正常に検証されたかどうかが通知で表示されます。これで、AWS S3がBraze Currents用に設定されました。
Brazeで、パートナー連携 > テクノロジーパートナーに移動し、Amazon S3 を選択します。
AWS認証情報ページで AWS Secret Access Key が選択されていることを確認し、AWSアクセスID、AWSシークレットアクセスキー、AWS S3バケット名を所定のフィールドに入力します。シークレットキーを入力したら、まず 認証情報をテスト を選択して認証情報が機能することを確認し、成功したら 保存 を選択します。


AWSコンソールでユーザーに移動し、Security Credentials タブで Create Access Key を選択すると、いつでも新しい認証情報を取得できます。
認証情報が正常に検証されたかどうかが通知で表示されます。これで、AWS S3がBrazeアカウントに連携されました。
AWSロールARN認証方式
この認証方式では、ロールのAmazonリソースネーム (ARN) を生成します。このARNにより、BrazeのAmazonアカウントは、バケットへのデータ書き込み用に作成したロールのメンバーとして認証できるようになります。
ステップ1: ポリシーを作成する
まず、アカウント管理者としてAWSマネジメントコンソールにサインインします。AWSコンソールのIAMセクションに移動し、ナビゲーションバーでPoliciesを選択してから、Create Policyを選択します。


CurrentsとDashboard Data Exportでは、それぞれ異なるポリシーが必要です。Brazeのバックエンドでエラー処理を行うには、s3:GetObjectが必要です。
JSONタブを開き、以下のコードスニペットをPolicy Documentセクションに入力します。INSERTBUCKETNAMEは必ずご自身のバケット名に置き換えてください。入力が終わったら、Review Policyを選択します。

メッセージのアーカイブのみを設定する場合は、Dashboard Data Exportタブのコードスニペットを使用してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME/*"]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject","s3:DeleteObject"],
"Resource": ["arn:aws:s3:::INSERTBUCKETNAME/*"]
}
]
}
次に、ポリシーに名前と説明を付けて、Create Policyを選択します。


ステップ2: ロールを作成する
コンソールの同じIAMセクションで、Roles > Create Roleを選択します。

BrazeアカウントからBrazeのアカウントIDとexternal IDを取得します。
- Currents: Brazeでパートナー連携 > Currentsに移動します。次に、新しいCurrentを作成を選択し、Amazon S3データエクスポートを選択します。ここで、ロールの作成に必要な識別子を確認できます。
- ダッシュボードデータのエクスポート: Brazeでパートナー連携 > テクノロジーパートナーに移動し、Amazon S3を選択します。ここで、ロールの作成に必要な識別子を確認できます。(メッセージのアーカイブのみを設定する場合は、ここでロールを作成してください。)
AWSコンソールに戻り、信頼されたエンティティのタイプとしてAnother AWS Accountを選択します。BrazeのアカウントIDを入力し、Require external IDチェックボックスをオンにして、Brazeのexternal IDを入力します。完了したらNextを選択します。

ステップ3: ポリシーをアタッチする
次に、先ほど作成したポリシーをロールにアタッチします。検索バーでポリシーを検索し、ポリシーの横にチェックを入れてアタッチします。完了したらNextを選択します。

ロールに名前と説明を付けて、Create Roleを選択します。

新しく作成したロールが一覧に表示されます。
ステップ4: Braze AWSにリンクする
AWSコンソールで、新しく作成したロールを一覧から探します。名前を選択すると、そのロールの詳細が開きます。

ロールの概要ページの上部にあるRole ARNをメモしておきます。

Brazeアカウントに戻り、指定されたフィールドにロールARNをコピーします。

メッセージのアーカイブのみを設定する場合は、Dashboard Data Exportタブの手順に従ってください。
Brazeでパートナー連携 > Currentsに移動します。次に、新しいCurrentを作成を選択し、Amazon S3データエクスポートを選択します。

Currentに名前を付けます。次に、認証情報セクションでAWS Role ARNが選択されていることを確認し、指定されたフィールドにロールARNとAWS S3バケット名を入力します。
連携エラー通知の連絡先メールアドレスを入力します。認証情報の問題や接続の問題など、連携でエラーが発生した場合、Brazeはこのアドレスに通知を送信します。適切な担当者がアラートを受け取れるようにするため、配布リストまたはグループメールアドレスを使用してください。
必要に応じて、以下のカスタマイズを追加することもできます。
- フォルダーパス (デフォルトは
currents) - サーバー側の保存時AES-256暗号化 (デフォルトはOFF) -
x-amz-server-side-encryptionヘッダーが含まれます
Currentを起動を選択して続行します。認証情報が正常に検証されたかどうかが通知で表示されます。これで、Braze Currents用のAWS S3の設定は完了です。

「S3 credentials are invalid」エラーが表示された場合は、AWSでロールを作成してからすぐに連携を行ったことが原因である可能性があります。しばらく待ってから再度お試しください。ダッシュボードデータのエクスポートで、メッセージにPutObjectアクセスやサーバー側の暗号化について記載されている場合は、S3の認証エラーのトラブルシューティングを参照してください。
Brazeで連携の下にあるテクノロジーパートナーページに移動し、Amazon S3を選択します。

AWS認証情報ページで、AWS Role ARNのラジオボタンが選択されていることを確認し、指定されたフィールドにロールARNとAWS S3バケット名を入力します。まず認証情報をテストを選択して認証情報が正しく機能することを確認し、成功したら保存を選択します。

新しい認証情報は、AWSコンソールでユーザーに移動し、Security CredentialsタブでCreate Access Keyを選択すると、いつでも取得できます。
認証情報が正常に検証されたかどうかが通知でお知らせされます。これで、AWS S3がBrazeアカウントに連携されました。
ロールARN方式のセキュリティに関する考慮事項
ステップ2でAnother AWS Accountを選択してBrazeのアカウントIDを入力すると、AWSはPrincipalがBraze AWSアカウントのルート (arn:aws:iam::<BRAZE_ACCOUNT_ID>:root) である信頼ポリシーを作成します。セキュリティチームがこの信頼ポリシーを確認する場合は、以下の点に注意してください。
- Brazeは共有のIAMユーザーを使用してお客様のロールを引き受けます。
- external IDは必須です。プリンシパルを特定のIAMユーザーに限定する場合も含め、信頼ポリシーには
sts:ExternalIdの条件を残しておいてください。 - プリンシパルを特定のIAMユーザーに限定できます。セキュリティポリシーでアカウントルートの信頼が許可されていない場合は、
PrincipalをBraze IAMユーザーのARNに置き換えることができます。ご利用のリージョンのARNを取得するには、Brazeサポートにお問い合わせください。 - Braze IAMユーザーは変更される可能性があります。プリンシパルは通常は安定していますが、将来Brazeが変更する場合があります。信頼ポリシーを特定のIAMユーザーに限定していて、そのユーザーが変更された場合、信頼ポリシーを更新するまでBrazeはお客様のロールを引き受けられません。
- プリンシパルは製品によって異なります。Currentsとダッシュボードデータのエクスポートでは、同じBraze IAMユーザーを使用します。クラウドデータ取り込みは別のAWSアカウントの別のプリンシパルを使用するため、その信頼ポリシーは個別に設定してください。
Currents用のAmazon S3認証情報の更新
既存のBraze Currentsコネクタで、統合を停止したり、すでにバケットにエクスポートされたデータを失ったりすることなく、Amazon S3認証情報を更新できます。
認証情報を更新する場合、またはAWS Secret Access KeyとAWS Role ARNを切り替える場合は、この記事の前半で説明した選択した方式のIAMおよびAWS側のステップ(ポリシー、ユーザーまたはロール、必要に応じて識別子)を完了してください。
AWSで認証情報の準備が完了したら、Brazeでパートナー連携 > Currentsに移動し、リストからAmazon S3コネクタを見つけてEditを選択し、Credentialsを更新してUpdate Currentを選択します。Brazeは入力された認証情報を検証します。コネクタは引き続き実行され、バケット内のデータは引き続き利用可能です。詳細については、Currentsの設定でのCurrentsの更新を参照してください。
Message Archivingバケットの切り替え
新しいS3バケットまたはIAMロールに切り替えている間も、Message Archivingは動作し続けます。Brazeは認証情報のテストに合格した後でのみ新しい設定を保存するため、アーカイブ先は常に正常に動作する宛先に向けられます。
変更はすぐには反映されません。保存後しばらくの間、Brazeが以前の設定を引き続き使用する場合があります。
- 以前のバケットが、一部のアーカイブされたメッセージを引き続き受信する場合があります (すでに進行中だった送信からのメッセージなど)。
- 以前のIAMロール (ロールベースの認証を使用していて、ロールARNを変更した場合) が、新しいバケットへの書き込みに引き続き使用される場合があります。
移行が完了したことを確認するため、新しいバケットに新しいアーカイブが数分間届くようになるまでは、以前のバケットまたはロールへのアクセスを削除しないでください。ロールARNを変更する場合は、それまでの間、以前のロールも新しいバケットに書き込めるようにしてください。そうしないと、切り替え中にアーカイブされたメッセージが保存されない可能性があり、再試行も行われません。
CurrentsがS3にファイルをアップロードする仕組み
Currentsは、各AvroファイルがAvro書き込みしきい値に達するとそのファイルを閉じます。その後、Amazon S3マルチパートアップロードを使用して、完成したファイルを5 MB単位のパートでバケットにアップロードします。マルチパートアップロードは書き込みしきい値とは別の処理で、通常はファイルが閉じられてから数秒以内に完了します。
Amazon S3は、進行中のマルチパートアップロードをオブジェクトとして公開しません。Currentsのファイルは、アップロードが完了して初めてListObjectsV2およびGetObjectから参照できるようになります。そのため、標準のS3 APIを通じてバケットを読み取るダウンストリームのプロセスが、アップロード途中のファイルを参照することはありません。
エクスポートの動作
クラウドデータストレージソリューションを連携しているユーザーが、API、ダッシュボードレポート、またはCSVレポートをエクスポートすると、次のようになります。
- すべてのAPIエクスポートでは、レスポンス本文にダウンロードURLが含まれないため、データストレージから取得する必要があります。
- すべてのダッシュボードレポートとCSVレポートは、ダウンロード用にユーザーのメールに送信され(ストレージ権限は不要)、データストレージにバックアップされます。
Unable to connect to S3, please validate that your credentials are correct エラー
CSVエクスポートのダウンロード時にこのエラーが表示された場合は、テクノロジーパートナーページでAmazon S3連携を開き、認証情報をテストを選択します。結果には、検証に失敗した内容が表示されます。たとえば、キーにGetObject権限がない場合、Brazeはダウンロードリンクを生成できません。
Brazeの連携で設定したS3バケットとオブジェクトパスに対して、連携ユーザーまたはロールがs3:GetObjectを呼び出せるように、IAMポリシーを更新してください。その他のエクスポートの問題については、エクスポートのトラブルシューティングを参照してください。

JSON形式の要件: JSONエクスポートでは、BrazeはJSONL(改行区切りJSON)形式を使用し、各行に個別のJSONオブジェクトが含まれます。この形式は、単一のJSON配列またはオブジェクトで構成される標準のJSONとは異なります。エクスポートされたファイルの各行は有効なJSONオブジェクトですが、ファイル全体としては単一の有効なJSONドキュメントではありません。これらのファイルを処理する際は、ファイル全体を単一のJSONドキュメントとして解析しようとせず、各行を個別のJSONオブジェクトとして解析してください。
Currentsのエクスポートでは、JSONではなくApache Avro形式(.avroファイル)が使用されます。このJSON形式の要件は、ダッシュボードのデータエクスポートとAPIエクスポートに適用されます。
複数のコネクター
S3バケットに送信するCurrentsコネクターを複数作成する場合は、同じ認証情報を使用できますが、コネクターごとに異なるフォルダーパスを指定する必要があります。これらのコネクターは同じワークスペース内に作成することも、複数のワークスペースに分けて作成することもできます。また、連携ごとに個別のポリシーを作成するか、両方の連携をカバーする1つのポリシーを作成するかを選択できます。
Currentsとデータエクスポートの両方で同じS3バケットを使用する予定の場合は、連携ごとに必要な権限が異なるため、2つの別々のポリシーを作成する必要があります。
トラブルシューティング
エラー: アカウントに PutObject アクセス権がない
ダッシュボードデータのエクスポート用にAmazon S3の認証情報を保存する際に次のエラーが表示される場合は、権限またはサーバー側の暗号化設定が正しくない可能性があります。
S3 Credentials are invalid because this account does not have 'PutObject access'. Please check the permissions and ensure that this key has access to 'PutObject' in the 'CUSTOMER-BUCKET-HERE' bucket.
この問題を解決するには、以下の点を確認してください。
バケットポリシーが正しくない
Amazon S3 連携で説明している正しい権限を持つポリシーを作成したことを確認してください (ご利用の認証方法に対応した Dashboard Data Export ポリシーを使用します)。
サーバー側の暗号化
User: arn:aws:sts::XXX:assumed-role/braze-iam-role/braze is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:XXX because no identity-based policy allows the kms:GenerateDataKey action
Brazeサポートから、またはAWSのログでこのエラーメッセージを受け取った場合、S3 バケットはAWS Key Management Service (SSE-KMS) 暗号化で構成されています。BrazeはCurrentsまたはダッシュボードデータのエクスポートでSSE-KMSをサポートしていません。この問題を解決するには、S3 バケットでSSE-KMSを無効にしてください。

BrazeはS3マネージドキーを使用したサーバー側の暗号化 (SSE-S3) をサポートしており、これはCurrentsとダッシュボードデータのエクスポートの両方に対応しています。
その他の権限を確認する
s3:GetBucketLocation や s3:PutObject など、必要な権限があることを確認してください。