Imagen

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 フローダイアグラム

デプロイメント

前提条件

  1. Google Cloudアカウント。アカウントをお持ちでない場合は、https://console.cloud.google.com/ で作成できます。

  2. gcloud がインストールされている。https://cloud.google.com/sdk/docs/install を参照してください。

  3. Google Cloud Runが対話できるTeradata Vantageインスタンス。

    Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。

構築とデプロイ

  1. サンプル リポジトリのクローンを作成します。

    git clone git@github.com:Teradata/segment-integration-tutorial.git
  2. リポジトリには、データベースを設定する 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 と呼ばれる新しいデータベースと、セグメント イベントを保存するためのテーブルのセットを作成します。

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

    gcloud config set project <PROJECT_ID>
    gcloud config set compute/region <REGION>
  4. プロジェクトの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)")
  5. 必要な Google Cloud サービスを有効にします。

    gcloud services enable cloudbuild.googleapis.com containerregistry.googleapis.com run.googleapis.com secretmanager.googleapis.com pubsub.googleapis.com
  6. アプリケーションを構築します。

    gcloud builds submit --tag gcr.io/$PROJECT_ID/segment-listener
  7. 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
  8. 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
  9. アプリを 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)')
  10. Segmentからイベントを受信する Pub/Sub トピックを作成します。

    gcloud pubsub topics create segment-events
  11. Pub/Sub が Cloud Run アプリを呼び出すために使用するサービス アカウントを作成します。

    gcloud iam service-accounts create cloud-run-pubsub-invoker \
         --display-name "Cloud Run Pub/Sub Invoker"
  12. サービス アカウントに 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
  13. 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
  14. サービス アカウントを使用して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
  15. Segmentがトピックに公開できるようにします。これを行うには、https://console.cloud.google.com/cloudpubsub/topic/list のプロジェクトの pubsub@segment-integrations.iam.gserviceaccount.com ロール Pub/Sub Publisher を割り当てます。詳細は Segment マニュアル を参照してください。

  16. Google Cloud Pub/Sub をSegmentの宛先として構成します。完全なトピック projects/<PROJECT_ID>/topics/segment-events を使用し、すべてのSegment イベント型 ( * 文字を使用) をトピックにマップします。

試してみる

  1. Segmentのイベント テスター機能を使用して、サンプル ペイロードをトピックに送信します。サンプルデータがVantageに保存されていることを確認します。

制約

  • この例では、アプリを単一リージョンにデプロイする方法を示します。多くの場合、この設定では十分な稼働時間は保証されません。Cloud Run アプリは、グローバル ロード バランサの背後にある複数のリージョンにデプロイする必要があります。

まとめ

このハウツーでは、Segment イベントを Teradata Vantage に送信する方法を説明します。この構成では、イベントがSegmentから Google Cloud Pub/Sub に転送され、さらに Cloud Run アプリケーションに転送されます。アプリケーションは Teradata Vantage にデータを書き込みます。

さらに詳しく

ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。
このページは役に立ちましたか?