Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみた

Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみた

Clock Icon2025.05.07

さがらです。

Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみたので、その内容をまとめてみます。

Self-hosted storageとは

まず前提として、Hightouchはデフォルトで、以下の2種類のデータをHightouchが管理するストレージに保持します。(下記は公式Docsから引用)

Hightouch stores data at-rest for two purposes:

  1. Change data capture
  2. In-app observability and debugging

https://hightouch.com/docs/security/storage

一方で、Hightouchには、ユーザーが管理するS3などのストレージに上述のデータを保存できるようにする「Self-hosted storage」という機能があります。この機能を使うことで、Hightouch上にデータが保存されず、セキュアなデータ管理を行えるようになります。

※「Self-hosted storage」は、HightouchのBusiness Tier以上の機能となります。

注意点

公式Docsにも記載がありますが、すでにHightouch上でいくつかのSyncを定期実行している状態でSelf-hosted storageに移行すると、これまで実行していたSyncのCDCプロセスが中断されてしまうため、「full resyncを実行する」か「Syncの設定からCDCのリセットを行う」のいずれかの対応が必要となります。

そのため、もし可能であれば、Self-hosted storageの設定はHightouchの使い始めに行うことが望ましいです。

試すこと

本記事では、以下3つを行い、S3をSelf-hosted storageとして設定していきます。

S3バケット・IAMポリシーの作成

対象のAWSアカウントで、S3バケット・IAMポリシーを作成しておきます。

S3バケット

公式Docsにもあるように、以下の点に注意しましょう。

  • バケットの推奨名は、<company>-hightouch
  • パブリックアクセスをブロック
  • Amazon S3キー暗号化(SSE-S3)を有効にする
    • 暗号化にSSE-KMSを使用している場合は、Hightouchへのアクセスを許可するためにIAMポリシーを更新する必要がある場合があります。
  • バケットのバージョン管理を無効にする

今回は下図の設定で作成しました。

2025-05-07_09h27_33

2025-05-07_09h27_53

IAMポリシー

こちらの公式Docsに沿って、下記のようにIAMポリシーを作成します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Sample",
            "Effect": "Allow",
            "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:ListBucket"
            ],
            "Resource": [
              "arn:aws:s3:::classmethod-sagara-demo-hightouch/*",
              "arn:aws:s3:::classmethod-sagara-demo-hightouch"
            ]
        }
    ]
}

実際の設定は下図のように行いました。

2025-05-07_09h43_51

2025-05-07_09h47_18

AWS Integrationの設定

以下のドキュメントに沿って、AWS Integrationの設定をしていきます。

https://hightouch.com/docs/security/aws

HightouchのSettingsの画面から、Cloud Providersタブに移動し、Add Cloud providerを押します。

2025-05-07_09h05_51

Amazon Web Servicesを押します。

2025-05-07_09h07_53

Access methodは、Cross-account roleで進めていきます。

この画面に表示された、AWS account IDAWS external IDをメモしておきます。

2025-05-07_09h13_03

次に、AWSのコンソールに移動し、IAMロールの作成画面に移動します。

2025-05-07_09h17_33

信頼されたエンティティタイプAWSアカウントを選択し、先ほどHightouchで確認したAWS account IDAWS external IDを入力します。

2025-05-07_09h28_38

許可ポリシーでは、先程作成したIAMポリシーを選択します。

2025-05-07_09h50_48

任意のロール名を設定し、作成します。

2025-05-07_09h53_11

作成後、対象のIAMロールのARNを確認してコピーします。

2025-05-07_09h55_23

Hightouchの画面に戻り、コピーしたIAMロールのARNをAWS role ARN欄に貼り付けて、Createを押します。

2025-05-07_09h56_32

S3バケットをSelf-hosted storageとして設定

以下のドキュメントに沿って、S3バケットをSelf-hosted storageとして設定していきます。

https://hightouch.com/docs/security/storage#configure-your-bucket-in-hightouch

HightouchのSettingsの画面からStorageタブに移動し、RegionBucket nameAWS credentialsを設定します。AWS credentialsは、先程Hightouch上で作成したIntegrationの名称を選択します。

この上で、右下のTest configurationを押して接続確認をした後に、Save changesを押します。

2025-05-07_17h52_03

※ちなみに、Test configurationを押して接続確認をすると、下図のようなファイルがS3バケット上に作られます。

2025-05-07_17h58_01

動作確認

これまでの設定を終えた上で、一度任意のSync処理を実行してみます。

その上でS3バケットを見ると、下図のようにWorkspace、Syncごとにフォルダが作られて、その中にファイルが作られていました。

2025-05-07_18h07_30

2025-05-07_18h07_50

実際にdata_0_0_0.csvの中身を見ると下図のようになっていました。Syncしたデータは2枚目のデータなので、暗号化されてS3にアウトプットされているようです。

2025-05-07_18h09_32

2025-05-07_18h10_11

最後に

Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみたので、その内容をまとめてみました。

Hightouchが管理するインフラにデータが残るのが気になるという方にピッタリの機能だと思います。ぜひご活用ください!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.