コンテンツにスキップ

Amazon S3

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

BrazeとAmazon S3の連携には、2つの統合戦略があります。

  • Currentsを活用すると、他のプラットフォーム、ツール、ロケーションに接続するまでデータを保存できます。
  • ダッシュボードのデータエクスポート(CSVエクスポートやエンゲージメントレポートなど)を使用します。

前提条件

新しい S3 バケットの作成

アプリ用のバケットを作成するには、次の手順を実行します。

  1. Amazon S3 コンソールを開き、手順に従って Sign in するか、Create an Account with AWS を選択します。
  2. サインイン後、Storage & Content Delivery カテゴリーから S3 を選択します。
  3. 次の画面で Create Bucket を選択します。
  4. プロンプトが表示されたら、バケットを作成し、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: ユーザーを作成する

アクセスキー ID とシークレットアクセスキーを取得するには、AWS で IAM ユーザーと管理者グループを作成します。

ステップ 2: 認証情報を取得する

新しいユーザーを作成したら、Show User Security Credentials を選択して、アクセスキー ID とシークレットアクセスキーを表示します。後で Braze ダッシュボードに入力する必要があるため、これらの認証情報をどこかに控えておくか、Download Credentials ボタンを選択してください。

アクセスキー ID とシークレットアクセスキーが表示された AWS IAM ユーザーのセキュリティ認証情報ページ。

ステップ 3: ポリシーを作成する

Policies > Get Started > Create Policy に移動して、ユーザーに権限を追加します。次に、Create Your Own Policy を選択します。これにより限定的な権限が付与され、Braze は指定されたバケットにのみアクセスできるようになります。

S3 連携用のポリシーオプションが表示された AWS IAM のポリシー作成画面。

任意のポリシー名を指定し、Policy Document セクションに次のコードスニペットを入力します。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"],
            "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 アカウントにリンクする準備が整いました。

Attach Policy アクションが選択された AWS IAM ユーザーの権限タブ。

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

Braze で パートナー連携 > Currents に移動します。

次に、Create New Current、Amazon S3 Data Export の順に選択します。

Current に名前を付けます。認証情報 セクションで AWS Secret Access Key が選択されていることを確認し、指定のフィールドに S3 アクセス ID、AWS シークレットアクセスキー、AWS S3 バケット名を入力します。

連携エラー通知の連絡先メールアドレスを入力します。認証情報の問題や接続の問題など、連携でエラーが発生した場合、Brazeはこのアドレスに通知を送信します。適切な担当者がアラートを受け取れるようにするため、配布リストまたはグループメールアドレスを使用してください。

AWS シークレットキーの認証情報フィールドが表示された、Amazon S3 用の Braze の Create New Current フォーム。

必要に応じて、次のカスタマイズを追加することもできます。

  • フォルダーパス: デフォルトは currents です。このフォルダーが存在しない場合は、Braze が自動的に作成します。
  • サーバー側の保存時 AES-256 暗号化: デフォルトは OFF で、x-amz-server-side-encryption ヘッダーが含まれます。

Launch Current を選択して続行します。

認証情報が正常に検証されたかどうかが通知されます。これで、Braze Currents 用の AWS S3 の設定が完了しました。

Braze で パートナー連携 > テクノロジーパートナー に移動し、Amazon S3 を選択します。

AWS 認証情報 ページで AWS Secret Access Key が選択されていることを確認し、指定のフィールドに AWS アクセス ID、AWS シークレットアクセスキー、AWS S3 バケット名を入力します。シークレットキーを入力したら、まず 認証情報をテスト を選択して認証情報が機能することを確認し、成功したら 保存 を選択します。

テストと保存のアクションがある、Braze の Amazon S3 テクノロジーパートナー認証情報ページ。

認証情報が正常に検証されたかどうかが通知されます。これで、AWS S3 が Braze アカウントに連携されました。

AWS ロール ARN 認証方式

この認証方式では、ロールの Amazon リソースネーム (ARN) を生成します。これにより、Braze の Amazon アカウントは、バケットへのデータ書き込み用に作成したロールのメンバーとして認証できます。

ステップ1:ポリシーを作成する

まず、アカウント管理者として AWS マネジメントコンソールにサインインします。AWS コンソールの IAM セクションに移動し、ナビゲーションバーで Policies を選択してから、Create Policy を選択します。

Create Policy ボタンが選択された AWS IAM の Policies ページ。

JSON タブを開き、Policy Document セクションに次のコードスニペットを入力します。INSERTBUCKETNAME は必ずご自身のバケット名に置き換えてください。入力が完了したら、Review Policy を選択します。

{
    "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 を選択します。

ポリシー名と説明のフィールドがある AWS IAM のポリシー確認ステップ。

新しく作成された S3 ポリシーが表示されている AWS IAM のポリシー一覧。

ステップ2:ロールを作成する

コンソールの同じ IAM セクション内で、Roles > Create Role を選択します。

Create Role ボタンが選択された AWS IAM の Roles ページ。

Braze アカウントから Braze のアカウント ID と external ID を取得します。

  • Currents: Braze で パートナー連携 > Currents に移動します。次に、Create New Current を選択し、Amazon S3 Data Export を選択します。ここに、ロールの作成に必要な識別子が表示されます。
  • ダッシュボードデータのエクスポート: Braze で パートナー連携 > テクノロジーパートナー に移動し、Amazon S3 を選択します。ここに、ロールの作成に必要な識別子が表示されます。(メッセージアーカイブのみを設定する場合は、ここでロールを作成してください。)

AWS コンソールに戻り、信頼されたエンティティのタイプとして Another AWS Account を選択します。Braze のアカウント ID を入力し、Require external ID チェックボックスをオンにして、Braze の external ID を入力します。完了したら Next を選択します。

S3 の「Create Role」ページ。このページには、ロール名、ロールの説明、信頼されたエンティティ、ポリシー、アクセス許可の境界のフィールドがあります。

ステップ3:ポリシーをアタッチする

次に、先ほど作成したポリシーをロールにアタッチします。検索バーでポリシーを検索し、ポリシーの横にチェックマークを付けてアタッチします。完了したら Next を選択します。

ロールへのポリシーのアタッチ画面

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

ロール名と説明の入力画面

これで、新しく作成したロールが一覧に表示されます。

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

AWS コンソールで、新しく作成したロールを一覧から探します。名前を選択して、そのロールの詳細を開きます。

新しく作成されたロールの AWS IAM ロール詳細ページ。

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

Role ARN の値が表示されている AWS IAM のロール概要。

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

Braze で パートナー連携 > Currents に移動します。次に、Create New Current を選択し、Amazon S3 Data Export を選択します。

AWS Role ARN とバケットのフィールドがある Braze Currents の Amazon S3 設定画面。

Current に名前を付けます。次に、認証情報セクションで AWS Role ARN が選択されていることを確認し、指定されたフィールドにロール ARN と AWS S3 バケット名を入力します。

連携エラー通知の連絡先メールアドレスを入力します。認証情報の問題や接続の問題など、連携でエラーが発生した場合、Brazeはこのアドレスに通知を送信します。適切な担当者がアラートを受け取れるようにするため、配布リストまたはグループメールアドレスを使用してください。

必要に応じて、次のカスタマイズを追加することもできます。

  • フォルダーパス (デフォルトは currents)
  • サーバー側の保存時 AES-256 暗号化 (デフォルトは OFF) - x-amz-server-side-encryption ヘッダーが含まれます

続行するには Launch Current を選択します。認証情報が正常に検証されたかどうかが通知で表示されます。これで、Braze Currents 用の AWS S3 の設定が完了しました。

Braze で、連携 の下にある テクノロジーパートナー ページに移動し、Amazon S3 を選択します。

AWS Role ARN の認証情報が選択された Braze の Amazon S3 テクノロジーパートナーページ。

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

認証情報が正常に検証されたかどうかが通知で表示されます。これで、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の更新を参照してください。

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 ポリシーを更新してください。その他のエクスポートに関する問題については、エクスポートのトラブルシューティングを参照してください。

複数のコネクター

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 を無効にしてください。

その他の権限を確認する

s3:GetBucketLocation や s3:PutObject など、必要な権限があることを確認してください。

New Stuff!