Twilio Segmentからイベントを保存する方法
概要
このソリューションは、Twilio Segmentからのイベントをリッスンし、Teradata Vantage インスタンスにデータを書き込みます。この例ではGoogle Cloudを使用しているが、任意のクラウドプラットフォームに変換できます。
アーキテクチャ
このソリューションでは、Twilio Segmentが生のイベント データを Google Cloud Pub/Sub に書き込みます。Pub/SubはイベントをCloud Runアプリケーションに転送します。Cloud Runアプリは、Teradata Vantageデータベースにデータを書き込みます。これは、VMの割り当てや管理を必要としないサーバレスソリューションです。
![Segment Google Cloud フローダイアグラム](../../_images/segment.flow.diagram.png)
デプロイメント
前提条件
-
Google Cloudアカウント。アカウントをお持ちでない場合は、https://console.cloud.google.com/ で作成できます。
-
gcloud
がインストールされている。https://cloud.google.com/sdk/docs/install を参照してください。 -
Google Cloud Runが対話できるTeradata Vantageインスタンス。
Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。
構築とデプロイ
-
サンプル リポジトリのクローンを作成します。
git clone git@github.com:Teradata/segment-integration-tutorial.git
-
リポジトリには、データベースを設定する
segment.sql
ファイルが含まれています。 お気に入りの SQL IDE、Teradata Studio (https://downloads.teradata.com/download/tools/teradata-studio)、またはbteq
というコマンド ライン ツール (Windows、https://downloads.teradata.com/node/200442[Linux]、https://downloads.teradata.com/node/201214[macOS ]用にダウンロード) を使用して、Vantage データベース上のスクリプトを実行します。 SQL スクリプトは、Segment
と呼ばれる新しいデータベースと、セグメント イベントを保存するためのテーブルのセットを作成します。 -
デフォルトのプロジェクトとリージョンを設定します。
gcloud config set project <PROJECT_ID> gcloud config set compute/region <REGION>
-
プロジェクトのIDと番号を取得します。これは後続のステップで必要になります。
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects list \ --filter="$(gcloud config get-value project)" \ --format="value(PROJECT_NUMBER)")
-
必要な Google Cloud サービスを有効にします。
gcloud services enable cloudbuild.googleapis.com containerregistry.googleapis.com run.googleapis.com secretmanager.googleapis.com pubsub.googleapis.com
-
アプリケーションを構築します。
gcloud builds submit --tag gcr.io/$PROJECT_ID/segment-listener
-
Segmentと共有する API キーを定義します。APIキーをGoogle Cloud Secret Managerに保存します。
gcloud secrets create VANTAGE_USER_SECRET echo -n 'dbc' > /tmp/vantage_user.txt gcloud secrets versions add VANTAGE_USER_SECRET --data-file=/tmp/vantage_user.txt gcloud secrets create VANTAGE_PASSWORD_SECRET echo -n 'dbc' > /tmp/vantage_password.txt gcloud secrets versions add VANTAGE_PASSWORD_SECRET --data-file=/tmp/vantage_password.txt
-
Segment データを Vantage に書き込むアプリケーションは Cloud Run を使用します。まず、Cloud Runがシークレットにアクセスできるようにする必要があります。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/secretmanager.secretAccessor
-
アプリを Cloud Run にデプロイします (
<VANTAGE_HOST>
を Teradata Vantage データベースのホスト名または IP に置き換えます)。2 番目のエクスポート文は、後続のコマンドで必要になるサービス URL を保存します。gcloud run deploy --image gcr.io/$PROJECT_ID/segment-listener segment-listener \ --region $(gcloud config get-value compute/region) \ --update-env-vars VANTAGE_HOST=35.239.251.1 \ --update-secrets 'VANTAGE_USER=VANTAGE_USER_SECRET:1, VANTAGE_PASSWORD=VANTAGE_PASSWORD_SECRET:1' \ --no-allow-unauthenticated export SERVICE_URL=$(gcloud run services describe segment-listener --platform managed --region $(gcloud config get-value compute/region) --format 'value(status.url)')
-
Segmentからイベントを受信する Pub/Sub トピックを作成します。
gcloud pubsub topics create segment-events
-
Pub/Sub が Cloud Run アプリを呼び出すために使用するサービス アカウントを作成します。
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"
-
サービス アカウントに Cloud Run を呼び出すアクセス権を付与します。
gcloud run services add-iam-policy-binding segment-listener \ --region $(gcloud config get-value compute/region) \ --member=serviceAccount:cloud-run-pubsub-invoker@$PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
-
Pub/Sub がプロジェクト内に認証トークンを作成できるようにします。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
-
サービス アカウントを使用してPub/Subサブスクリプションを作成します。
gcloud pubsub subscriptions create segment-events-cloudrun-subscription --topic projects/$PROJECT_ID/topics/segment-events \ --push-endpoint=$SERVICE_URL \ --push-auth-service-account=cloud-run-pubsub-invoker@$PROJECT_ID.iam.gserviceaccount.com \ --max-retry-delay 600 \ --min-retry-delay 30
-
Segmentがトピックに公開できるようにします。これを行うには、https://console.cloud.google.com/cloudpubsub/topic/list のプロジェクトの
pubsub@segment-integrations.iam.gserviceaccount.com
ロールPub/Sub Publisher
を割り当てます。詳細は Segment マニュアル を参照してください。 -
Google Cloud Pub/Sub をSegmentの宛先として構成します。完全なトピック
projects/<PROJECT_ID>/topics/segment-events
を使用し、すべてのSegment イベント型 (*
文字を使用) をトピックにマップします。
制約
-
この例では、アプリを単一リージョンにデプロイする方法を示します。多くの場合、この設定では十分な稼働時間は保証されません。Cloud Run アプリは、グローバル ロード バランサの背後にある複数のリージョンにデプロイする必要があります。
まとめ
このハウツーでは、Segment イベントを Teradata Vantage に送信する方法を説明します。この構成では、イベントがSegmentから Google Cloud Pub/Sub に転送され、さらに Cloud Run アプリケーションに転送されます。アプリケーションは Teradata Vantage にデータを書き込みます。
さらに詳しく
ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。 |