Heroku Connect
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年01月24日(水)
Table of Contents
Heroku Connect は、Salesforce 組織と Heroku Postgres データベースの間でデータを同期するアドオンです。Heroku Postgres で Heroku Connect を使用すると、Salesforce データを操作するカスタムアプリケーションを構築できます。
一般に Heroku を初めて使う場合は、Heroku Connect を設定する前にスターターガイドを参照してください。
ユースケース
Heroku Connect では、純粋なデータ統合を提供します。つまり、オブジェクトとテーブルのデータだけを同期します。どのオブジェクトを読み取り専用または読み取り/書き込みとして同期するかを決定できます。このアーキテクチャは、Heroku アプリケーションでデータの保存または操作を行う、多くのシナリオで役立ちます。Heroku アプリを構築している場合、またはすでに Heroku Postgres にデータがある場合、Heroku Connect は Heroku から Salesforce への統合に最適です。
たとえば、1 つ以上の Salesforce 組織が同じ Heroku Postgres データベースと同期できます。Heroku アプリは、Postgres データベースからプルして、分析、請求書の生成、他のサービスでの検索などを実行できます。これらのアクションの出力で Postgres データベースの行を変更または生成することができ、これが Salesforce に再び同期されます。
サポートされるオブジェクトと API バージョン
使用中のバージョンの Salesforce に対して Heroku Connect がサポートするオブジェクトの完全な一覧は、「Supported Salesforce Standard Objects」(サポートされている Salesforce 標準オブジェクト) ページで入手できます。Bulk API は Salesforce API v39 より前のバージョンでは使用できないため、Heroku Connect では少なくとも v39 を使用する必要があります。詳細は、サポートされている Salesforce オブジェクトを参照してください。
新しい Heroku Connect アドオンは、デフォルトでは Salesforce API の現在のメジャーリリースバージョンを使用します。また、接続の作成時に API バージョンを指定することもできます。
Heroku Connect の設定
Heroku Connect は、API アクセスがある Salesforce のエディションでしか使用できません。一部の Salesforce プランタイプ (試用版を含む) は、デフォルトでは API アクセスがないため、Heroku Connect では使用できません。
Heroku Connect インスタンスは、アタッチ先のアプリケーションと同じリージョンにあります。
デフォルトでは、Heroku Connect demo
プランは、アドオンがプロビジョニングされたときに使用されます。Heroku Connect の有料プランを契約している顧客は、enterprise
プランか shield
プラン、またはその両方をプロビジョニングすることもできます。「使用可能なプラン」セクションを参照し、詳細は営業にお問い合わせください。
クイックスタートガイド
任意のツールを使用して設定手順を確認してください。
- クイックスタート: Heroku Connect: このガイドは、ダッシュボードを使用して Heroku Connect を設定するのに役立ちます。
- クイックスタート: Heroku Connect CLI: このガイドは、Heroku Connect CLI プラグインを使用して設定するのに役立ちます。
- クイックスタート: Heroku Connect API: このガイドは、Heroku Connect API を使用して設定するのに役立ちます。
設定の推奨事項と考慮事項
- Heroku Connect では、より小さなプランを使用できますが、少なくとも Standard-4、Premium-4、Private-4、または Shield-4 のデータベースを使用することを強くお勧めします。小さなデータベースプランは、接続制限や I/O パフォーマンスが Heroku Connect のほとんどの本番ユースケースに対して不十分です。
- ネットワークレイテンシーがサービスのパフォーマンスでの重大な要因になる可能性があるため、地理的に分散したアーキテクチャのソリューションアーキテクチャを慎重に検討することが重要です。ベストプラクティスとして、Connect と Postgres を同じリージョン内の、地理的に Salesforce 組織にできるだけ近い場所に配置します。
- 組織に対して認証した後、それを後で変更することはできません。詳細は、「Salesforce 組織」を参照してください。
- 設定中に Heroku Connect で使用する Salesforce API バージョンを選択した後、その API バージョンを変更することはできません。それを後で変更するには、別の API バージョンを使用して新しいインスタンスを作成します。
- Heroku Postgres データベース時間 を UTC タイムゾーンのままにしておくことをお勧めします。Heroku Connect では UTC タイムゾーンが正常に動作することを期待しています。
- Heroku Connect には、同期のための十分な権限を持つ専用の統合ユーザーを使用します。最小権限の原則に従って、具体的なニーズに基づいて統合ユーザーの権限を調整します。ユーザーと Salesforce 組織の両方に
API Enabled
(API が有効) 権限が付与されている必要があります。最適なパフォーマンスを確保するには、権限を付与するオブジェクトにView All
(すべて表示) またはModify All
(すべて変更) 権限を付与します。View All
(すべて表示) 権限がないと、Salesforce が行ごとの権限を個別に確認し、それによりインデックスの使用が除外されるため、パフォーマンスが大幅に低下します。より大規模な接続の場合は、View All
(すべて表示) がないと、同期が完全に失敗する原因となるOPERATION_TOO_LARGE
エラーが発生する可能性もあります。
統合ユーザーのパスワードが Salesforce で変更されたか期限切れになった場合、Heroku Connect が使用中のセッションや更新トークンに影響しません。接続が承認されなくなることはありません。
オブジェクトのマッピング
マッピングによって、Salesforce オブジェクトとそのフィールドが Heroku Postgres と Salesforce でどのように保持されるかが決定されます。詳細は、「Heroku Connect のマッピングの管理」および「マッピングの設定オプション」を参照してください。
同期のパフォーマンス
同期のパフォーマンスに影響を与える要因:
- オブジェクトのサイズ (多数の列のマッピング)
- どちらかの側 (Salesforce またはデータベース) での大量の変更
- 存在しない変更に ‘タッチ’ するか、またはそれをレコードに保存する ORM の使用
- 全体的なデータベースの負荷
同期のパフォーマンスには接続ごとに大きな差があります。パフォーマンスを判断する最良の方法は、本番環境の Salesforce 組織と本番環境データベースプランを使用してテストすることです。詳細は、「Heroku Connect のパフォーマンスの最適化」を参照してください。
Heroku Connect ダッシュボード
Heroku Connect には、接続を設定、監視、トラブルシューティングするための独自のダッシュボードが付属しています。詳細は、「Heroku Connect ダッシュボード」を参照してください。
Salesforce 組織
ユーザーは、Heroku Connect の設定プロセスの一部として Salesforce 組織に対して認証されます。
Heroku Connect を組織に対して認証するとき、作成するマッピングはその組織に固有のものです。これには、基礎となるデータベーステーブルの構造と、Salesforce とデータベースの間で同期されるデータの両方が含まれます。データが競合したり破損したりする可能性を減らすために、既存の Heroku Connect 接続を別の Salesforce 組織に対して再認証することはできません。
サンドボックス組織は、定期的に更新できます。これには、本番環境の組織のデータの新しいスナップショットの作成と、アクティベーション時点での現在のサンドボックスの新しい組織への置き換えが含まれます。
新しい本番環境または更新されたサンドボックス組織からデータを同期するには、「Heroku Connect の同期と接続の管理」を参照してください。
ログイン IP 制限
Salesforce 組織に組織全体またはプロファイルベースの IP 制限がある場合は、許可された IP アドレスの範囲を Heroku Connect を含むように拡張する必要があります。Connect はその独自の Private Space 内で実行されるため、Salesforce でこれらの IP を許可された一覧に追加できます。
セル | IP アドレス |
---|---|
ダブリン (EU) | 52.214.175.26, 52.208.24.13, 52.208.130.154, 52.51.165.133 |
ダブリン-2 (EU) | 54.216.192.111, 54.220.228.19, 52.211.107.184, 54.247.146.62 |
フランクフルト | 35.156.46.88, 35.156.50.253, 35.156.52.2, 35.156.47.9 |
ロンドン | 35.179.69.185, 35.176.61.130, 18.132.75.161, 18.170.156.203 |
モントリオール | 3.98.151.8, 3.96.95.102, 35.182.53.41, 15.156.115.7 |
ムンバイ | 35.154.208.62, 15.206.112.151, 3.110.39.82, 15.207.246.110 |
オレゴン州 | 52.37.54.207, 52.37.42.188, 52.37.54.223, 52.37.32.69 |
シンガポール | 18.143.231.77, 3.1.125.189, 18.141.97.227, 18.143.254.53 |
シドニー | 52.62.247.222, 52.64.71.172, 52.62.66.221, 52.62.69.183 |
東京 | 52.193.240.226, 52.68.146.69, 52.196.222.211, 52.196.223.90 |
バージニア州 (米国) | 52.201.85.23, 52.201.89.242, 52.71.226.41, 52.201.69.94 |
バージニア-2 (米国) | 3.210.174.175, 3.210.168.103, 52.205.195.161, 54.163.146.74 |
バージニア-3 (米国) | 3.209.200.83, 18.205.77.142, 34.238.32.220, 54.205.161.147 |
バージニア-4 (米国) | 3.218.231.103, 35.173.98.137, 52.45.188.236, 54.205.104.78 |
接続のセルは、その接続の 「Manage Connection」 (接続の管理) ページにアクセスし、「Cell Label」 (セルラベル) 値を見つけることによって確認できます。
Salesforce 組織のログイン履歴を表示することによって、Heroku Connect が正常にログインしていることを確認できます。ユーザー名が認証に使用されたメールアドレスに一致しており、インスタンスが配置されているリージョンに応じて、アプリケーションが Heroku Connect
または Heroku Connect EU
のどちらかであるエントリが表示されます。
Salesforce には、セッションを、それが発信された IP アドレスにロックすることができるセッション設定があります。Heroku Connect では複数の IP アドレスを使用するため、この設定を有効にすることは避けてください。
Heroku では、これらの IP アドレスに加えられた変更を Changelog で発表します。これらの変更の通知を受け取るには、Changelog を購読してください。
セキュリティ
Heroku Connect は、Salesforce のシステム管理者がいつでも取り消すことができる OAuth トークンを保存することによって、Salesforce の安全な手法を観察します。Heroku Connect では、トークンの有効期限が切れると自動的に Salesforce でアクセストークンを更新します。
Heroku Connect では、データが Salesforce から Heroku Postgres データベースに、または Heroku Postgres データベースから Salesforce に移動するたびに、安全な SSL 接続を使用します。暗号化されたデータは、移動中はパブリックインターネット経由で転送される可能性があり、処理中は暗号化されたボリュームに一時的に最大 24 時間保存される可能性がありますが、それ以外は Heroku Postgres データベースの外部に保存されません。
Heroku のセキュリティに関する詳細情報はここで確認できます。
Heroku Shield での使用
Heroku には、Shield Private Spaces と互換性がある Shield Connect プランが用意されています。このプランは、HIPAA データプロセッサー要件を満たしています。このプランをプロビジョニングするには、Shield Private Space と Shield Postgres の両方をプロビジョニングしていて、契約上の資格を有していることが条件になります。Shield Connect へのアクセスを有効にするには、アカウント担当者にお問い合わせください。
Heroku Dashboard から Heroku Connect アドオンを追加するときに Shield プランを選択できます。CLI を使用してプロビジョニングすることもできます。
heroku addons:create herokuconnect:shield -a your_app_name
Standard の Heroku Connect プランは Shield Private Space 内にプロビジョニングできないことに注意してください。
Heroku Connect アドオンへのアクセスの取り消し
Heroku Connect では、Heroku Connect ダッシュボードへのアクセスを許可するために Heroku のアプリアクセス許可を使用します。ユーザーは、初めて addons:open
を実行するか、または CLI を使用して自身を Connect アドオンに関連付けたときに記憶されます。Heroku Connect では、ユーザーが 6 時間後か、またはアイドル状態が一定期間続いた後 (いずれか早い方) にアクセスできることを自発的に確認します。それより早く特定のユーザーのアクセスを取り消したい場合は、ターゲットユーザーのアクセス許可を取り消し、他の任意のユーザーで addons:open を実行して、ターゲットユーザーに強制的にアドオンへのアクセスを失わせるようにすることができます。
高度な使用法
パフォーマンスの最適化
「Heroku Connect のパフォーマンスの最適化」を参照してください。
Heroku Connect の複数のインスタンス
1 つのアプリケーションに複数の Heroku Connect アドオンを追加できます。たとえば、複数の Salesforce 組織のデータを同期する必要がある場合もあります。これを実現するための 1 つの方法として、それぞれ異なる組織と連携して動作するように承認および設定された複数のアドオンを使用します。
組織ごとに異なるデータベーススキーマ名を使用すると、複数の Heroku Connect アドオンで 1 つの Heroku Postgres データベースを使用できます。Heroku Postgres のパフォーマンスは通常、1 つのデータベース内にスキーマが約 50 個存在したときに低下し始めます。
同じ Salesforce 組織に Heroku Connect の複数のインスタンスを接続することもできます。これは、1 つの組織から多数の Salesforce オブジェクトを同期するには望ましい場合があります。
複数の Heroku Connect アドオンを使用している場合は、アドオンごとに個別の統合ユーザーを使用する必要があります。Salesforce では、ユーザーあたり 10 個の並列クエリという制限が適用されます。さらに、各 Heroku Connect アドオンが Salesforce API 呼び出しに異なるアクセストークンを使用するため、Salesforce には統合ユーザーあたり 5 つのトークンというデフォルトの制限があります。複数のアドオンに同じ統合ユーザーを使用していて、この制限を超える場合、Salesforce への接続には頻繁な再認証が必要になり、それにより同期が繰り返し一時停止されます。
複数の Heroku Connect アドオンが存在する場合は、CLI からコマンドを実行するときに、そのアドオンに割り当てられたグローバル一意識別子を使用する必要があります。たとえば、Heroku Connect ダッシュボードを開くには、次のようにします。
$ heroku addons:open herokuconnect-gladly-8321
Heroku Connect の使用法と機能についての詳細は、Heroku Connect のカテゴリページを参照してください。
アドオンプランの管理
使用可能なプラン
Heroku Connect には、次の 3 プランがあります。
demo
: これはアドオンをプロビジョニングするときのデフォルトプランであり、Heroku Connect のすべての機能へのアクセスを提供しますが、次の制限があります。
10,000 行の同期制限は、Postgres で同期される合計行数をカウントします。この制限には、行に対する各更新など、行全体のすべての同期アクティビティはカウントされません。
enterprise
: これは、Heroku Connect を購入した後に使用する有料プランです。demo
プランを使用している既存のアドオンがある場合は、「アドオンプランのアップグレード」セクションの手順に従うことによって、それをアップグレードできます。契約の下で割り当てられる行数は、変更される頻度には関係なく、すべてのマッピングにわたって同期される合計行数に従って計算されます。
enterprise
プランは以前、danketsu
と呼ばれていました。
shield
: これは、Heroku Shield Connect を購入した後に使用する有料プランです。Heroku Shield Connect は、Shield プランがある Heroku Postgres データベースとのみデータを同期できます。
enterprise
、shield
、danketsu
の各プランは、Heroku Dashboard のアプリケーションのアドオン一覧に ‘契約’ 価格と共に表示されます。有料プランを使用していることを確認するには、プラン名が enterprise、shield、または danketsu であることを確認する必要があります。
Heroku Connect enterprise
または shield
プランについての詳細は、営業にお問い合わせください。
アプリケーションにすでに Heroku Connect がプロビジョニングされているかどうかと、現在のプランを確認するには、heroku addons
コマンドを使用できます。
$ heroku addons | grep herokuconnect
herokuconnect (herokuconnect-gladly-8321) demo free
アドオンプランのアップグレード
有料プランの資格を持つ Heroku チーム内で作業している場合は、Heroku Dashboard で Edit plan
(プランの編集) オプションを使用して、または CLI を使用してアップグレードできます。
$ heroku addons:upgrade herokuconnect:enterprise
WARNING: No add-on name specified (see `heroku help addons:upgrade`)
Finding add-on from service herokuconnect on app sleepy-ocean-5276... done
Found herokuconnect-gladly-8321 (herokuconnect:demo) on sleepy-ocean-5276.
Changing herokuconnect-gladly-8321 plan to herokuconnect:enterprise... done, (contract)
Plan change successful
アプリケーションに複数の Heroku Connect アドオンがアタッチされている場合は、アップグレードコマンドを実行するときに、そのアドオンに割り当てられたグローバル一意識別子も指定する必要があります。
$ heroku addons:upgrade herokuconnect-gladly-8321 herokuconnect:enterprise
Changing herokuconnect-gladly-8321 plan to herokuconnect:enterprise... done, (contract)
Plan change successful
アドオンの削除
アドオンは Heroku Dashboard を使用して、または CLI を使用して削除できます。
アドオンを削除すると、マッピングされたテーブルが Postgres データベースから削除されます。先に進む前に、データベースの最新のバックアップがあることを確認してください。
アドオンを削除するときは、接続スキーマに対して DROP SCHEMA
を実行しようと試みます。スキーマに関連付けられたテーブルまたは関数が少しでも残っていると、そのスキーマは削除されません。
$ heroku addons:destroy herokuconnect
! WARNING: Destructive Action
! This command will affect the app: sleepy-ocean-5276
! To proceed, type "sleepy-ocean-5276" or re-run this command with --confirm sleepy-ocean-5276
> sleepy-ocean-5276
Destroying herokuconnect-gladly-8321 on sleepy-ocean-5276... done
アプリケーションに複数の Heroku Connect アドオンがアタッチされている場合は、CLI を使用するときに、削除するアドオンに割り当てられたグローバル一意識別子を指定する必要があります。たとえば、herokuconnect-gladly-8321
などです。
制限
- Heroku Connect は、Heroku Postgres の接続プールと互換性がありません。
- Heroku Connect を
app.json
ファイルを通してレビューアプリに追加することはできません。レビューアプリが作成された後、Heroku Connect を手動でプロビジョニングできます。 - Heroku Connect は、データを同期するために、データベースの
public
スキーマで関数を作成します。search_path
からpublic
スキーマが削除されるか、またはこれらの関数が削除されると、Heroku Connect がこれらを見つけられなくなり、データの同期が中断します。Heroku Connect がget_xmlbinary
やその他の共有関数を見つけられない場合は、このナレッジベースの記事を参照してください。 postgres_fdw
ではsearch_path
がpg_catalog
に変更されるため、Heroku Connect では外部データラッパーを使用できません。これにより、Connect では、データを同期するために必要なpublic
スキーマに保存されている共有関数を使用できなくなります。- Heroku Connect では、Connect テーブルの変更を監視して変更を Salesforce に書き込むために Postgres トリガーを使用します。Connect のテーブルで独自のカスタムトリガーを実装すると、Connect で更新を見落としたり、負荷が増加したりする場合があります。Heroku サポートではカスタムトリガーに関する支援を提供できない場合があるため、それらはご自身の責任でご使用ください。カスタムトリガーの使用に関するその他のガイダンスを参照してください。
- デフォルトでは、Heroku Connect が Salesforce にデータを書き込むとき、割り当てルールは実行されません。リードとケースに対してデフォルトの割り当てルールを有効にする場合は、サポートチケットを作成してください。複数の接続がある場合は、接続ごとに設定を有効にできるよう、必ずそのことをお伝えください。
アプリケーションを削除した場合の動作
Heroku Connect は、アプリケーション固有のアドオンです。このアドオンをアプリケーション間で共有することはできません。アプリケーションを削除すると、アドオンとそれに関連付けられたデータもデータベースから削除されます。Heroku Connect によって使用された Heroku Postgres データベースが他のアプリケーションにアタッチされた場合は、アプリケーションを削除してもデータベースは残ります。ただし、アプリを削除しても、Connect によって使用されたマッピングされたテーブルはデータベースから削除されます。
サポート
Heroku Connect のサポートとランタイムの問題はすべて、いずれかの Heroku サポートチャネル経由で送信する必要があります。