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