AWS Glue ジョブからZoho CRM のデータにJDBC 経由で接続

加藤龍彦
加藤龍彦
デジタルマーケティング
Amazon S3 でホストされているCData JDBC ドライバーを使用してAWS Glue ジョブからZoho CRM にデータ連携。

AWS Glue はAmazon のETL サービスであり、簡単にデータプレパレーションを実行してストレージおよび分析用に読み込むことができます。AWS Glue と一緒にPySpark モジュールを使用すると、JDBC 接続経由でデータを処理するジョブを作成し、そのデータをAWS データストアに直接読み込むことができます。ここでは、CData JDBC Driver for ZohoCRM をAmazon S3 バケットにアップロードし、Zoho CRM からデータを抽出してCSV ファイルとしてS3 に保存するためのAWS Glue ジョブを作成・実行する方法について説明します。

CData JDBC Driver for ZohoCRM をAmazon S3 バケットにアップロード

CData JDBC Driver for ZohoCRM をAWS Glue から使用するには、ドライバーの.jar ファイル(および必要なライセンスファイル)をAmazon S3 のバケットに配置する必要があります。

  1. Amazon S3 コンソールを開きます。
  2. バケットを選択、もしくは作成します。
  3. [アップロード]をクリックします。
  4. JDBC Driver の.jar ファイル(cdata.jdbc.zohocrm.jar) をインストールディレクトリのlib フォルダから選択してアップロードします。

Amazon Glue Job を設定

  1. [分析]->[AWS Glue]をクリックします。
  2. AWS Glue コンソールで、[ETL]->[ジョブ]をクリックします。
  3. [ジョブの追加]をクリックして新しいGlue ジョブを作成します。
  4. ジョブのプロパティを設定します:
    • 名前: ZohoCRMGlueJob など任意のジョブ名
    • IAM ロール: AWSGlueServiceRole もしくは AmazonS3FullAccessSelect の権限があるIAM ロールを設定(JDBC Driver がAmazon S3 バケットにあるため)。
    • Type: [Spark]を選択。
    • Glue version: ドロップダウンからバージョンを選択。
    • このジョブ実行: [ユーザーが作成する新しいスクリプト]を選択。
      スクリプトプロパティの設定:
      • スクリプトファイル名: GlueZohoCRMJDBC などのスクリプトファイル名。
      • スクリプトが保存されているS3 パス: S3 バケットを入力もしくは選択。
      • 一時ディレクトリ: S3 バケットを入力もしくは選択
    • ETL 言語: [Python]を選択
    • セキュリティ設定、スクリプトライブラリおよびジョブパラメータを展開。依存JARS パスは、JDBC の.jar ファイルをアップロードしたS3 バケットに設定。.jar ファイル名 s3://mybucket/cdata.jdbc.zohocrm.jar も含めます。
  5. [次へ]をクリックすると、ほかのAWS エンドポイントへの接続オプション追加ができます。Redshift、MySQL などに接続する際にはここで接続を作成できます。
  6. [ジョブの保存とスクリプトの編集]をクリックします。
  7. 開いたエディタで、Python スクリプトを記述します。サンプルは以下です。

サンプルGlue スクリプト

CData JDBC driver でZoho CRM に接続するには、JDBC URL を作成します。さらにライセンスとしてJDBC URL にRTK プロパティを設定する必要があります。RTK は通常のライセンスと異なりますので、CData まで直接ご連絡をください。

Zoho CRM への接続

それでは、Zoho CRM に接続していきましょう。データに接続するには、以下の接続パラメータを設定します。

  • Region:Zoho CRM サーバーURL のドメインに関連付けられたリージョン
  • Schema:Zoho CRM のバージョン(v2v2.1、またはv4)。Zoho CRM のバージョンごとに独自のデータモデルがあります

これらのプロパティに加えて、認可時にサンドボックスまたは開発者インスタンスのいずれかを選択した場合は、InstanceType 接続プロパティでも同じ設定を行ってください。

Zoho CRM への認証

Zoho CRM では、データへの認証に2つの方法が用意されています。お使いの環境に応じて適切な方法を選択てください。

デスクトップ経由で自分のローカルデータに認証を行う場合(非ブラウザ接続):CData 製品が提供する埋め込みOAuth アプリケーションを使用

CData 製品はすでにZoho CRM にOAuth アプリケーションとして登録されています。そのため、デスクトップアプリケーションを介したローカルデータへの接続では、自動的に組み込みアプリケーションが使用されます。 OAuth 交換の繰り返しを避け、ローカルデータにアクセスするたびにOAuthAccessToken を手動で設定する手間を省くには、InitiateOAuthGETANDREFRESH に設定してください。

ネットワーク経由で共有データに認証を行う場合(ブラウザ接続):カスタムOAuth アプリケーションを使用

すべてのOAuth フローで、この認証を有効にするにはAuthSchemeOAuth に設定する必要があります。

より詳細な認証手順については、ヘルプドキュメントの「Zoho CRM への認証」をご確認ください。

ビルトイン接続文字列デザイナー

JDBC URL の作成をサポートするビルトインの接続文字列デザイナーがあります。ドライバーの.jar ファイルをダブルクリックするか、コマンドラインで.jar ファイルを実行するとデザイナーが開きます。

java -jar cdata.jdbc.zohocrm.jar

必要項目を入力すると、デザインs-下部に接続文字列が生成されますのでクリップボードにコピーして使います。

Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

CData JDBC driver をPySpark で使用して、AWS Glue モジュールでZoho CRM のデータを取得して、S3 にCSV 形式で保存するシンプルなスクリプト例は以下です。

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sparkContext = SparkContext()
glueContext = GlueContext(sparkContext)
sparkSession = glueContext.spark_session

##Use the CData JDBC driver to readZoho CRM のデータfrom the Accounts table into a DataFrame
##Note the populated JDBC URL and driver class name
source_df = sparkSession.read.format("jdbc").option("url","jdbc:zohocrm:RTK=5246...;AuthToken=2ad3b3e719f6bed7368e5e7e26e4f988;").option("dbtable","Accounts").option("driver","cdata.jdbc.zohocrm.ZohoCRMDriver").load()

glueJob = Job(glueContext)
glueJob.init(args['JOB_NAME'], args)

##Convert DataFrames to AWS Glue's DynamicFrames Object
dynamic_dframe = DynamicFrame.fromDF(source_df, glueContext, "dynamic_df")

##Write the DynamicFrame as a file in CSV format to a folder in an S3 bucket.
##It is possible to write to any Amazon data store (SQL Server, Redshift, etc) by using any previously defined connections.
retDatasink4 = glueContext.write_dynamic_frame.from_options(frame = dynamic_dframe, connection_type = "s3", connection_options = {"path": "s3://mybucket/outfiles"}, format = "csv", transformation_ctx = "datasink4")

glueJob.commit()

Glueジョブを実行する

スクリプト記述後、Glue ジョブを実行します。実行した取得/ロードのジョブが完了するとAWS Glue コンソールのジョブページでステータスが確認できます。成功するとS3 バケットにZoho CRM のデータのCSV ファイルが生成されています。

このようにCData JDBC Driver for ZohoCRM をAWS Glue で使用することで、Zoho CRM のデータをAWS Glue で自在に扱うことができます。Glue の外部データへの接続性を拡張するJDBC Driver を是非お試しください。

はじめる準備はできましたか?

Zoho CRM Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Zoho CRM Icon Zoho CRM JDBC Driver お問い合わせ

潜在顧客、連絡先、営業案件、アカウントなどのZoho CRM アカウントデータを組み込んだパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。