Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみた
さがらです。
Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみたので、その内容をまとめてみます。
Self-hosted storageとは
まず前提として、Hightouchはデフォルトで、以下の2種類のデータをHightouchが管理するストレージに保持します。(下記は公式Docsから引用)
Hightouch stores data at-rest for two purposes:
- Change data capture
- In-app observability and debugging
一方で、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 Integrationの設定
- S3バケットをSelf-hosted storageとして設定
S3バケット・IAMポリシーの作成
対象のAWSアカウントで、S3バケット・IAMポリシーを作成しておきます。
S3バケット
公式Docsにもあるように、以下の点に注意しましょう。
- バケットの推奨名は、
<company>-hightouch - パブリックアクセスをブロック
- Amazon S3キー暗号化(SSE-S3)を有効にする
- 暗号化にSSE-KMSを使用している場合は、Hightouchへのアクセスを許可するためにIAMポリシーを更新する必要がある場合があります。
- バケットのバージョン管理を無効にする
今回は下図の設定で作成しました。


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"
]
}
]
}
実際の設定は下図のように行いました。


AWS Integrationの設定
以下のドキュメントに沿って、AWS Integrationの設定をしていきます。
HightouchのSettingsの画面から、Cloud Providersタブに移動し、Add Cloud providerを押します。

Amazon Web Servicesを押します。

Access methodは、Cross-account roleで進めていきます。
この画面に表示された、AWS account IDとAWS external IDをメモしておきます。

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

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

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

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

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

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

S3バケットをSelf-hosted storageとして設定
以下のドキュメントに沿って、S3バケットをSelf-hosted storageとして設定していきます。
HightouchのSettingsの画面からStorageタブに移動し、Region、Bucket name、AWS credentialsを設定します。AWS credentialsは、先程Hightouch上で作成したIntegrationの名称を選択します。
この上で、右下のTest configurationを押して接続確認をした後に、Save changesを押します。

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

動作確認
これまでの設定を終えた上で、一度任意のSync処理を実行してみます。
その上でS3バケットを見ると、下図のようにWorkspace、Syncごとにフォルダが作られて、その中にファイルが作られていました。


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


最後に
Hightouchで管理されるデータをユーザー管理のS3等のストレージに変更できる「Self-hosted storage」を試してみたので、その内容をまとめてみました。
Hightouchが管理するインフラにデータが残るのが気になるという方にピッタリの機能だと思います。ぜひご活用ください!






