著者 Adam Tworkiewicz
最終更新日 2022年1月18日
警告
本記事はTeradata CorporationによるGetting Startedに掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
概要
このソリューションは、Twilio Segmentからのイベントをリッスンし、Teradata Vantageインスタンスにデータを書き込むものです。この例ではGoogle Cloudを使用していますが、どのようなクラウドプラットフォームにも対応できます。
アーキテクチャ
このソリューションでは、Twilio Segmentは生のイベントデータをGoogle Cloud Pub/Subに書き込みます。Pub/SubはイベントをCloud Runアプリケーションに転送します。Cloud Runアプリケーションは、Teradata Vantageデータベースにデータを書き込む。これは、VMの割り当てや管理を必要としないサーバーレス・ソリューションです。
デプロイメント
前提条件
① Google Cloudのアカウント。アカウントがない場合は、https://console.cloud.google.com/ から作成できます。
② gcloudがインストールされていること。https://cloud.google.com/sdk/docs/install を参照してください。
③ Google Cloud Runが対話できるTeradata Vantageインスタンス。
メモ!
Vantageの新しいインスタンスが必要な場合は、Google Cloud、Azure、AWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMware、VirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。
ビルドとデプロイ
① サンプルリポジトリをクローンします。
git clone git@github.com:Teradata/segment-integration-tutorial.git
② レポには、データベースをセットアップする segment.sql ファイルが含まれています。SQL IDE、[TeradataStudio]https://downloads.teradata.com/download/tools/teradata-studio または bteq (Windows, Linux, macOS 用ダウンロード) というコマンドラインツールで Vantage db にこのスクリプトを実行します。このSQLスクリプトは、Segmentという新しいデータベースと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キーを定義します。Google Cloud Secret ManagerにAPIキーを保存します。
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
⑧ Vantage に Segment データを書き込むアプリケーションは、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つ目のexport文は、後続のコマンドで必要となるサービス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があなたのトピックに公開できるようにします。そのためには、プロジェクトで pubsub@segment-integrations.iam.gserviceaccount.com ロールPub/Sub Publisherを https://console.cloud.google.com/cloudpubsub/topic/list で割り当てます。詳しくは、Segmentのマニュアルを参照してください。
⑯ Google Cloud Pub/SubをSegmentの宛先として設定します。フルトピックのprojects//topics/segment-eventsを使用し、すべてのSegmentイベントタイプ(*文字を使用)をトピックにマップします。
試してみよう
① Segment の Event Tester 機能を使用して、サンプルペイロードをトピックに送信します。サンプルデータがVantageに保存されていることを確認します。
制限事項
・この例では、1 つの地域にアプリをデプロイする方法を示しています。多くの場合、このセットアップでは十分なアップタイムが保証されません。Cloud Run アプリは、グローバル ロード バランサーの背後にある複数のリージョンにデプロイする必要があります。
まとめ
このハウツーでは、SegmentのイベントをTeradata Vantageに送信する方法を説明しました。この構成では、SegmentからGoogle Cloud Pub/Subにイベントを転送し、その後Cloud Runアプリケーションに転送します。このアプリケーションは、Teradata Vantageにデータを書き込む。
参考資料
・Segment Pub/Sub destination documentation