Skip to content

Amazon S3

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

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

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

前提条件

新しい S3 バケットの作成

アプリ用のバケットを作成するには、以下の手順に従ってください。

  1. Amazon S3 コンソールを開き、手順に従ってサインインするか、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とシークレットアクセスキーを表示します。次に、これらの認証情報をメモするか、Download Credentialsボタンを選択してください。後でBrazeダッシュボードに入力する必要があります。

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

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

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

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

任意のポリシー名を指定し、以下のコードスニペットをPolicy Documentセクションに入力します。INSERTBUCKETNAMEをバケット名に置き換えてください。これらの権限がないと、連携の認証情報チェックが失敗し、作成されません。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "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/*"]
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "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に名前を付けます。Credentialsセクションで、AWS Secret Access Keyが選択されていることを確認し、S3アクセスID、AWSシークレットアクセスキー、AWS S3バケット名を指定のフィールドに入力します。

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

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

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

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

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

認証情報が正常に検証されたかどうかを通知でお知らせします。これでAWS S3がBraze Currents用に設定されました。

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

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

テストと保存のアクションが表示されたBraze Amazon S3テクノロジーパートナー認証情報ページ。

認証情報が正常に検証されたかどうかを通知でお知らせします。これでAWS S3がBrazeアカウントに統合されました。

AWS ロール ARN 認証方法

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

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

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

「Create Policy」ボタンが選択された AWS IAM ポリシーページ。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "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/*"]
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "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 ロールページ。

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

ロール ARN

ロールに名前と説明を入力し、Create Roleを選択します。

ロール ARN

新しく作成されたロールがリストに表示されます。

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

AWS コンソールで、リストから新しく作成したロールを見つけます。名前を選択して、そのロールの詳細を開きます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

認証情報が正常に検証されたかどうかを示す通知が表示されます。これで AWS S3 がBrazeアカウントに統合されました。

Currents用のAmazon S3認証情報の更新

既存のBraze Currentsコネクタで、統合を停止したり、すでにバケットにエクスポートされたデータを失ったりすることなく、Amazon S3認証情報を更新できます。

認証情報を更新する場合、またはAWS Secret Access KeyAWS Role ARNを切り替える場合は、この記事の前半で説明した選択した方式のIAMおよびAWS側のステップ(ポリシー、ユーザーまたはロール、必要に応じて識別子)を完了してください。

AWSで認証情報の準備が完了したら、Brazeでパートナー連携 > Currentsに移動し、リストからAmazon S3コネクタを見つけてEditを選択し、Credentialsを更新してUpdate Currentを選択します。Brazeは入力された認証情報を検証します。コネクタは引き続き実行され、バケット内のデータは引き続き利用可能です。詳細については、Currentsの設定でのCurrentsの更新を参照してください。

エクスポートの動作

クラウドデータストレージソリューションとエクスポートAPIを連携しているユーザー、またはダッシュボードレポートやCSVレポートをエクスポートするユーザーは、以下の動作を経験します。

  • すべてのAPIエクスポートは、レスポンスボディにダウンロードURLを返さず、データストレージから取得する必要があります。
  • すべてのダッシュボードレポートとCSVレポートは、ダウンロード用にユーザーのメールに送信され(ストレージ権限は不要)、データストレージにバックアップされます。

Unable to connect to S3, please validate that your credentials are correct エラー

CSVエクスポートのダウンロード時にこのエラーが表示された場合は、テクノロジーパートナーページで Amazon S3 連携を開き、認証情報をテストを選択してください。結果には、検証に失敗した内容が表示されます。たとえば、キーに GetObject 権限が不足しており、Brazeがダウンロードリンクを生成できない場合があります。

IAMポリシーを更新して、連携ユーザーまたはロールがBraze連携で設定されたS3バケットとオブジェクトパスに対して s3:GetObject を呼び出せるようにしてください。その他のエクスポートの問題については、エクスポートのトラブルシューティングを参照してください。

複数のコネクター

複数のCurrentsコネクターを作成してS3バケットに送信する場合、同じ認証情報を使用できますが、コネクターごとに異なるフォルダーパスを指定する必要があります。これらは同じワークスペース内で作成することも、複数のワークスペースに分けて作成することもできます。また、連携ごとに個別のポリシーを作成するか、両方の連携をカバーする1つのポリシーを作成するかを選択できます。

同じS3バケットをCurrentsとデータエクスポートの両方に使用する場合は、各連携に異なる権限が必要なため、2つの別々のポリシーを作成する必要があります。

トラブルシューティング

エラー:アカウントに PutObject アクセス権がない

ダッシュボードデータエクスポート用のAmazon S3認証情報を保存する際に以下のエラーが表示される場合、権限の設定ミスまたはサーバーサイド暗号化の設定が原因である可能性があります。

1
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連携に記載されている正しい権限でポリシーを作成したことを確認してください(認証方法に応じたダッシュボードデータエクスポートポリシーを使用してください)。

サーバーサイド暗号化

1
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:GetBucketLocations3:PutObjectなど、必要な権限があることを確認してください。

New Stuff!