7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TwilioからのイベントをVantageにロードする方法

Last updated at Posted at 2022-10-19

著者 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の割り当てや管理を必要としないサーバーレス・ソリューションです。

画像1.png

デプロイメント

前提条件

① Google Cloudのアカウント。アカウントがない場合は、https://console.cloud.google.com/ から作成できます。
② gcloudがインストールされていること。https://cloud.google.com/sdk/docs/install を参照してください。
③ Google Cloud Runが対話できるTeradata Vantageインスタンス。

メモ!
Vantageの新しいインスタンスが必要な場合は、Google CloudAzureAWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMwareVirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。

ビルドとデプロイ

① サンプルリポジトリをクローンします。

git_clone
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イベントを格納するためのテーブル群を作成します。

③ デフォルトのプロジェクトとリージョンを設定します。

set_project
gcloud config set project <PROJECT_ID>
gcloud config set compute/region <REGION>

④ プロジェクト ID と番号を取得します。この後のステップで必要になります。

export_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のサービスを有効にします。

enable_services
gcloud services enable cloudbuild.googleapis.com containerregistry.googleapis.com run.googleapis.com secretmanager.googleapis.com pubsub.googleapis.com

⑥ アプリケーションを構築する。

build
gcloud builds submit --tag gcr.io/$PROJECT_ID/segment-listener

⑦ Segmentと共有するAPIキーを定義します。Google Cloud Secret ManagerにAPIキーを保存します。

set_secret_key
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がシークレットにアクセスできるようにする必要があります。

set_authorization
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を保存します。

run
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トピックを作成します。

create_topics
gcloud pubsub topics create segment-events

⑪ Pub/SubがCloud Runアプリを呼び出すために使用するサービスアカウントを作成します。

create_account
gcloud iam service-accounts create cloud-run-pubsub-invoker \
     --display-name "Cloud Run Pub/Sub Invoker"

⑫ サービスアカウントにCloud Runを呼び出す権限を与えます。

set_grant2account
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がプロジェクト内で認証トークンを作成できるようにする。

set_grant4createtoken
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サブスクリプションを作成する。

create_subscription
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 Publisherhttps://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

Teradata Vantageへのお問合せ

Teradata Vantage へのお問合せ

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?