Salesforce Connect で外部データベースに接続するには?CData API Server を使った連携手順を解説

TOP

Salesforce 上で外部システム(例えば基幹システム)のデータを扱いたい場合、Salesforce Connect という機能を利用することで、外部データの参照が可能になります。この機能では、OData という規格に準拠した REST API をはじめ、Amazon DynamoDB、Athena、Snowflake といったデータソースへの接続もサポートされています。

では、SQL Server や Oracle のような一般的なリレーショナルデータベースと連携したい場合はどうすればよいでしょうか。そのようなケースでは、CData API Server を Salesforce とデータベースの間に配置することで、それぞれのプロトコルに合わせた橋渡しが可能となり、Salesforce 上から各種データベースのデータを直接参照することができるようになります。それでは、その具体的な方法をご紹介します。

目次

構成イメージ

データ基盤構成としては大きく2ステップあります。1ステップ目は、API Server からアクセスしているデータベースのテーブル単位でAPI を生成することです。と言っても、難しい設定手順はありません。以下記事でインストール~API 生成、外部からの利用方法を紹介しているのでご参照ください。
https://www.cdata.com/jp/blog/install-api-apiserver


2ステップ目では、Salesforce Connect からAPI Serevr へのコネクションを作成します。作成方法もシンプルではありますが、設定を進めるうえでいくつか注意点もありますので、後ほど詳しくお伝えします。
それでは今回はSQL Server データをSalesforce で参照できるところまでを試していきます。

CData API ServerのSSL/TLS化

Salesforce Connect では接続先がhttps であることが必須ですので、まずは API Server に対してSSL/TLS 設定を行います。

今回は一時的な利用のため、Certbot のApache プラグインを使ってLet's Encrypt のSSL 証明書を発行しました。その際、FQDN として sslip.io というサービスを活用し、IP アドレスベースのドメインを生成しています。

certbot --apache -d xx.xxx.xx.xx.sslip.io


次に取得した証明書をp12ファイルに変換します。

openssl pkcs12 -export   -inkey /etc/letsencrypt/live/xx.xxx.xx.xx.sslip.io/privkey.pem   -in /etc/letsencrypt/live/xx.xxx.xx.xx.sslip.io/fullchain.pem   -out /etc/ssl/private/appcert.p12   -name myapp   -passout pass:password123


P12 ファイルができたので、API Sever 側の設定を行います。
インストールディレクトリを参照し、任意のディレクトリを作成します。(今回はkeystore 名前で作成)

/root/apiserver/keystore


作成したディレクトリに、先ほど作成したp12ファイルを配置します。

[root@ip-xxx-xx-x-xxx keystore]# ll
 total 8
 -rw-------. 1 root root 2827 Apr 23 13:03 appcert.p12

次に、API Server の設定ファイルを生成します。以下コマンドを実行するとアプリケーションは起動せずに設定ファイルを生成することができます。

java -jar apiserver.jar -GenerateProperties

コマンド実行後、インストールディレクトリに「apiserver.properties」が配置されていますので、中身を更新します。
今回は8443 ポートを使用、keyStoreType をPKCS12、あとはp12ファイルのパスとパスワードを設定します。

;; TLS
 cdata.tls.port=8443
 cdata.tls.keyStoreType=PKCS12
 cdata.tls.keyStorePath=/root/apiserver/keystore/appcert.p12
 cdata.tls.keyStorePassword=password123

これで、設定が完了となります。起動していただくと、https(ポート8443)でAPI Server にアクセスできればSSL/TLS化の対応は完了です。※サービス起動でも良いですし、java -jar apiserver.jar で直接起動でも可

API Server × データ連携

データベースやSaaSのデータを簡単にREST APIとして公開!~CData API Server ポイント解説~

  • データベースやSaaSのデータを簡単にREST APIとして公開
  • OData、Swagger/OpenAPIに対応
  • セキュリティ、認証、アクセス制御機能を搭載
製品資料を無料でダウンロード

データベースへのコネクション~API エンドポイント生成

API Server にログインできましたら、SQL Server へのコネクションを作成します。
コネクション追加画面で「SQL Server」を検索し、クリックします。

SQL Server に接続するための認証情報などを入力して、右上の「保存およびテスト」をクリックしてコネクション情報を保存します。


次にAPI として公開したいSQL Server のテーブルを選択します。API ページを開き、「テーブルを追加」ボタンからテーブルにチェックを入れて次に進みます。今回はdbo にあるAccount テーブルを使用します。その後、自動的にAPI エンドポイントが生成されます。


外部からのアクセス方法などは以下の記事参考にしてください。
https://www.cdata.com/jp/blog/install-api-apiserver


Admin ユーザーの認証トークンを取得します。取得したら必ず保存ボタンをクリックしてください。


これで1ステップ目のAPI Server 側の設定が完了しました。

Salesforce Connect の設定

それではSalesforce Connect で外部オブジェクトの設定を行いましょう。まずは、外部データソースの設定です。

設定画面のクイック検索で「外部」と入力し、外部データソースを選択 → 新規外部データソースの順でクリックします。


任意の外部データソース名、種別は「Salesforce Connect: Odata 4.0」、URLはAPI Server のサービスディレクトリエンドポイントを指定します。
URL はAPI 画面の「エンドポイントを表示」ボタンをクリックすることで確認できます。


管理者ユーザー名はAPI Server のユーザー、パスワードは払い出したAPI Server の認証トークンをセットします。


「検証して同期」ボタンをクリックします。


チェックを入れてから同期ボタンをクリックします。


10秒ほど待つと自動的に前の画面に戻ります。


また、自動的に外部オブジェクトも作成されます。


このように、項目リストが表示されます。

これで設定作業は完了です。

外部オブジェクトの確認

では、本当にSQL Server のデータが取得できるようになったかを確認してみます。クイック検索にタブと入力してタブボタン → 新規の順でクリックします。


外部オブジェクトを選択したら次へボタンをクリックします。


ここは特に変更なく次へをクリックします。


ここもデフォルト設定のまま画面下にある保存ボタンをクリックします。


これでタブが作成されたのでアクセスしてみましょう。


すべてを選択に切り替えると、下記エラーが発生するかと思います。

EXTERNAL_OBJECT_AUTHENTICATION_EXCEPTION: このレコードを表示するには、ここで個人設定内の外部データソースのログイン情報を入力してください: https://xxxxxxxxxxxxxx.my.salesforce.com/lightning/settings/personal/ExternalObjectUserSettings/home。または、Salesforce システム管理者にお問い合わせください


メッセージに含まれているURL を開くと下記画面が表示されます。外部システムへ接続する際はこちらも設定する必要があるようです。それでは新規ボタンをクリックします。


ここで注意していただく点として、上段のユーザー名はSalesforce のユーザー名を設定する必要があります。虫眼鏡でユーザー名が表示されますので、選択して設定します。他、下段のユーザー名/パスワードは、API Server の管理画面にログインする際のユーザー名/パスワードを設定します。
設定したら保存ボタンをクリックします。


これでエラーは解消されるはずなので、もう一度作成したタブを開き、全データを表示してみますと、SQL Server のAccount テーブルのIDが表示されました。さらに、他の項目も表示させたい場合は右側の設定ボタンをクリックします。


「表示する項目を選択」をクリック


Name と更新日を表示する項目に選択して保存をクリックすると、


このように表示することができました。

おわりに

いかがでしたでしょうか。CData API Server を利用することで、データベース上のデータを API 経由で Salesforce Connect に接続し、Salesforce 上で活用できるようになります。これにより、日常的に利用する Salesforce 上で基幹システムの最新データを参照できるようになり、ビジネスへの活用がさらに広がるかと思います!
CData API Server は、30日間の無償トライアルをご利用いただけます。ぜひこの機会にお試しください!
https://www.cdata.com/jp/apiserver/

トライアル・お問い合わせ

関連コンテンツ