by CData Software Japan | January 08, 2021

AWS Glue Studio でSalesforce→S3 データ連携ジョブを作成

はじめに

Glue Studioは、AWSの完全マネージド型ETLサービスをGUIからジョブを作成できる機能です。

docs.aws.amazon.com

CDataでは、GlueおよびGlue Studio にて、会計・CRMERP・MA・グループフェアなどの多種多様なSaaSやNoSQLデータベースからデータを抽出できるカスタムコネクタの提供を開始しました。

www.cdata.com

本記事では、Glue Studio、および、CData Glue Connectors製品を使ってSalesforceのデータを抽出してS3バケットに格納するジョブの作成方法をご紹介します。

f:id:kuwazzy:20210108121922p:plain

前提

  • SalesforceAPIアクセスできるアカウントを保有していること
  • AWSのアカウントを保有していること
  • AWS MarketplaceでCData Glue Connectors製品をサブスクライブ(購入)できること

手順

IAMロールの作成

Glueジョブを作成する時に以下のアクセス権限を保有するIAMロールが必要となります。

  • AWSGlueServiceRole
  • AmazonEC2ContainerRegistryReadOnly
  • AmazonS3FullAccess

AWSマネジメントコンソールから「Identity and Access Management (IAM)」サービスを開いて上記アクセス権限を持つIAMロールを作成します。

f:id:kuwazzy:20210108123646p:plain

CData Glue Connector for Salesforceのサブスクライブ

こちらのリンクからAWS MarketPlaceにアクセスして、CData AWS Glue Connector for Salesforceを選択します。

f:id:kuwazzy:20210108124013p:plain

Continue to Subscribeボタンをクリックします。

f:id:kuwazzy:20210108124159p:plain

Termsを確認して、再度、活性化されたContinue to Subscribeボタンをクリックします。Continue to Configurationボタンをクリックします。 ※課金されますのでご注意ください

f:id:kuwazzy:20210108124726p:plain

Configure this software画面が表示されるので、Delivery MethodにはCData AWS Glue Connector for Salesforceが、Software Versionに最新のものが選択されていることを確認して、Continue to Launchボタンをクリックします。

f:id:kuwazzy:20210108124843p:plain

CData AWS Glue Connector for SalesforceがLaunchされたことを確認します。

f:id:kuwazzy:20210108125106p:plain

Usage Instructionsボタンをクリックして表示されるウィンドウ内の「Activate the connector with AWS Glue Studio」リンクを開きます。

f:id:kuwazzy:20210108125357p:plain

Create connection画面が開くので、Activate connector onlyをクリックします。これで、Glue StudioからCData Glue Connector for Salesforceが利用できるようになりました。

Connectionの作成

AWS Glue StudioのConnectors画面で、connectorsからCData Glue Connector for Salesforceを選択してCreate connectionを開きます。

f:id:kuwazzy:20210108143900p:plain

Create connection画面が開きます。Nameに任意の名称(本例では、Salesforce_Jp)をセットします。

f:id:kuwazzy:20210108144313p:plain

スクロールダウンして、Connection credential typeには「username_password」を選択します。

f:id:kuwazzy:20210108144137p:plain

Credentialsには以下の値をセットします。

Placeholder value
${Username} Salesforceへのログインユーザー
${Password} Salesforceへのログインパスワード
${SecurityToken} Salesforceのセキュリティトーク

※セキュリティトークンの取得方法はこちらの記事をご参照ください

Create connecitonボタンをクリックします。

Jobの作成

AWS Glue StudioのJobを開き、Create jobからBlank graphを選択してCreateボタンをクリックします。

f:id:kuwazzy:20210108144404p:plain

Visualキャンバス上の青のプラスボタンをクリックしてNodeを追加します。追加したNodeのNode propertiesタブにてNameに任意の名称(本例では、Salesforce)をセットしてNode typeにはCData AWS Glue Connector for Salesforceを選択します。

f:id:kuwazzy:20210108140536p:plain

続いてData source properties - Connectorタブを開きます。Connectionには前の手順で作成したConnection(例:Salesforce_Jp)を選択します。今回の手順では、Lead(見込み客)のデータを全件取得するため、Enter table nameを選択してTable nameにはLeadをセットします。

f:id:kuwazzy:20210108140456p:plain

再度、Visualキャンバス上の青のプラスボタンをクリックしてNodeを追加します。Node propertiesタブのNameには任意の名称(本例では、S3)をセットして、Node typeはData target内のS3を選択します。Node parentsは先の手順で作成したSalesforceからの抽出Node(Salesforce)です。

f:id:kuwazzy:20210108140913p:plain

Data target properties -S3タブを開きます。FormatはJSON、Compression TypeはNone(圧縮しない)、S3 Target Locationには、出力先のS3バケットをセットします。

f:id:kuwazzy:20210108141737p:plain

続いて、Job detailsタブを開きます。Nameにジョブの名称(本例では、Salesforce2S3)をセットして、IAM Roleは先の手順で作成したIAMロールを選択します。他の項目はデフォルトのままで構いません。SaveボタンをクリックしてJobを保存します。

f:id:kuwazzy:20210108141255p:plain

Jobの実行

それでは、作成したJobを実行(Run)してみましょう。右上のRunボタンをクリックします。

f:id:kuwazzy:20210108141925p:plain

Runsタブを開きジョブの実行状況を確認します。ジョブが終了してRun statusがSucceededが表示されれば成功です。失敗した場合は本画面からLogを確認することが出来ます。

f:id:kuwazzy:20210108142231p:plain

S3へ連携されたデータの確認

上記Jobで出力先として設定したS3のバケットを開きます。バケット内にオブジェクトが追加されていることを確認します。

f:id:kuwazzy:20210108142633p:plain

追加されたオブジェクトのデータをS3 Selectを使用したクエリで参照します。

f:id:kuwazzy:20210108142811p:plain

ジョブのTargetNode(S3)で形式をJSONに選択したので、入力設定の形式もJSONに合わせます。

f:id:kuwazzy:20210108144600p:plain

以下のSQLクエリを実行します。

SELECT * FROM s3object s LIMIT 5

クエリ結果でフォーマット済みを選択して、SalesforceのLead(見込み客)のデータが抽出出来ていることを確認します。

f:id:kuwazzy:20210108143212p:plain

まとめ

本記事では、SalesforceのLead(見込み客)の抽出を例にご紹介しましたが、Salesforce内の他オブジェクト(AccountやOpportunityなど)や、本サイトの様々なデータソース(Hubspot、Netsuite、MongoDB、Snowflakeなど)からの抽出も同様の手順で可能です。

f:id:kuwazzy:20210108143524p:plain

是非、GlueおよびGlueStudioを利用してデータレイクを構築している方はご活用ください。