AmazonRDSのデータベースをSalesforceに連携する

はじめに
クラウドネイティブなデータ連携サービスReckoner(レコナー)を使用して、RDSのデータをSalesforceに連携します。
オンプレミスやクラウドに存在するMySQLやPostgreSQLといったデータベースとSalesforceを連携させたい場面は良くあると思います。
例えばデータベースに蓄積された顧客情報や、マスタデータをSalesforceに連携させて活用したり、Salesforceにある保存期間の長いデータをデータベース側にアーカイブとして蓄積する、といった使い方も可能です。
特にSalesforceはストレージコストが高くかかりますので、このような外部データベースとの連携は欠かせません。
Reckonerはこのような連携を簡単に実現できますので、今回はAmazon RDSのデータベースをSalesforceに連携する手順を紹介します。
使用するデータベース
今回の連携では以下URLのworld databaseを使用します。
https://dev.mysql.com/doc/index-other.html
連携するテーブルはcityを使用します。
以下のような形でデータが入っている状態になります。

Salesforce側の準備
手順は割愛しますが、cityテーブルに連携するカスタムオブジェクトと、cityテーブルのカラムに対応するカスタム項目をそれぞれ作成しておきます。

ポイントは、Salesforceへの連携時にcityテーブルのIDカラムをユニークな値として使用することでupsertの動作を行うため、IDカラムに対応するカスタム項目側で外部IDを有効化しておくことです。
連携の概要
- RDS側のSecurityGroupでReckonerのソースIPからのアクセスを許可する
- MySQLの接続情報を登録
- Salesforceの接続情報を登録
- MySQLのSourceを追加
- Salesforceのカスタム項目にテーブルのカラムを連携させるため、PROJECTIONを用いてマッピング設定を追加
- 連携先のSalesforceを追加
Reckonerで作成するワークフローは最終的にこのような形になります。

RDSのSecurityGroupでReckonerのソースIPからのアクセスを許可する
これはAWSのSecurityGroupの画面になりますが、事前にReckonerからのアクセスを許可するためinbound rulesにReckonerのソースIPを登録しておきます。

また、RDS側はPublic accessibilityを有効化してあります。
MySQLの接続情報を登録
左側のサイドバーからIntegrationを選択し、MySQLを選択します。

遷移後の画面でCreate Integrationを選択します。

各情報を入力し、Setを選択して保存します。

Salesforceの接続情報を登録
先程と同様にIntegrationからSalesforceを選択してCreate Integrationを選択します。

各必要な項目を入力してSetを選択して保存します。
今回の連携先のSalesforceはSandbox環境なのでUse Sandboxを有効化します。
ワークフロー作成
左側のグローバルメニューからワークフローを選択して
「Create Workflow」を選択します。

MySQLのSouceを追加
SourceからMySQLをドラッグして右側にドロップすると、MySQLの設定画面が開かれるので必要な項目を入力します。

- Display Name: 適切な名前を入力します
- Integration: 先程設定したIntegrationを選択します
- Database: 使用するデータベース「world」を入力します
- Query: データ取得に使用するクエリ書きます。今回はcityテーブルをすべて持ってくるようにクエリを書いています。
設定完了したらSetを選択します。
Salesforceのカスタム項目にテーブルのカラムを連携させるため、PROJECTIONを用いてマッピング設定を追加
TransformからPROJECTIONをドラッグして右側にドロップすると、PROJECTIONの設定画面が開かれるので必要な項目を入力します。

- Display Name: 適切な名前を入力します
- mode: keepを選択します
- keep Fields: cityテーブルの中で転送するカラム名を入力します。今回は全て転送するので全てのカラム名を入力しています
- Rename Fields: 各カラム名を、Salesforce側のカスタム項目名にマッピングします。全てのカラム名に対してマッピングの設定を入力します。
設定完了したらSetを選択します。
連携先のSalesforceを追加
SinkからSALESFORCEをドラッグして右側にドロップすると、SALESFORCEの設定画面が開かれるので、必要な項目を入力します。

- Display Name: 適切な名前を入力します
- Integration: 先程設定したIntegrationを選択します
- Sobject: 連携するカスタムオブジェクトのSobjectを入力します
- Mode: upsertを選択します。公式でも推奨されているように、基本はupcertを選択します
- Key Field: 冒頭で説明した、upsertでKeyとなるユニークなFieldを選択します。
- Camelize: 今回は設定しません
設定完了したらSetを選択します。
ここまで設定できれば、ワークフローは以下のようになっているはずです。

問題なさそうであれば、ここのワークフローの保存と実行以下を実施してワークフローを実行します。
データの確認
ワークフローの実行に問題なければ、以下のようにSalesforce側にRDSのcityテーブルのデータが連携されているはずです。

まとめ
いかがでしたでしょうか。
Reckonerを使用することで非常に簡単にRDSのデータをSalesforceに連携させることができます。
今回はご紹介できませんでしたが、SalesforceからRDSへの連携も同様に行うことが可能です。
もしSalesforceとデータベースの連携でお悩みの方がいましたら、是非使ってみてください。
Reckoner(レコナー)について
Reckoner(レコナー)は、スリーシェイクが提供するオンプレミスからクラウドサービスまで、様々なデータを連携させることが可能なクラウドネイティブなデータ連携プラットフォーム(Data Integration Platform as a Service)です。
データ整備に欠かせないETL/ELTやデータパイプラインなどをノンプログラミングで実現し、従来エンジニアが必要とされていた開発・運用コストを大幅に削減できます。
https://www.reckoner.io/
ETLツールについて詳しく知りたい、ETLツールの選び方を知りたいという方はこちらの「ETLツールとは?選び方やメリットを解説」をぜひご覧ください。