Salesforce トリガーを使用すると、変更データ キャプチャ(CDC)またはエンタープライズ メッセージング プラットフォームのイベントをリッスンできます。このトリガーにより、CDC イベント(作成、更新、削除、削除取り消し)のいずれか、または Salesforce インスタンスのプラットフォーム イベントに基づいて統合を開始できます。
始める前に
このセクションでは、変更データ キャプチャ(CDC)イベントまたはプラットフォーム イベントを使用して Pub/Sub 方式で Apigee Integration に変更をストリーミングするように Salesforce インスタンスを接続および構成する手順の概要を説明します。Apigee で Salesforce 関連のタスクまたはトリガーを構成する前に、次の操作を行う必要があります。
統合ユーザーを設定する
以下のステップで統合ユーザーを設定します。
sysadmin
認証情報を使用して Salesforce インスタンスにログインします。- 下の図に示すように、歯車アイコンをクリックし、[Setup ] を選択します。
- [Administration] メニューから [Users] > [Users] をクリックします。
- [Users] パネルで、[New User] ボタンを選択します。
- [User Edit] ダイアログで、次の情報を入力します。
- First Name: 統合ユーザーの名。
- Last Name: 統合ユーザーの姓。
- Email Address: 統合ユーザーのメールアドレス。可能であれば、グループのメールアドレスにしてください。
- Username: 組織レベルの命名規則に準拠するユーザー名。
新しい統合ユーザーを作成する場合は、
EMAIL.SALESFORCE_ORG_NAME.SANDBOX_NAME
の形式を使用します。既存の統合ユーザーが存在している場合は、そのユーザー名がここに入力されていることを確認してください。
- Role: プルダウンからオプションを選択します。
- User License: 「
Salesforce
」と入力するか、試用版組織を使用する場合は「Salesforce Platform
」と入力します。 - Profile: 統合ユーザーの権限プロファイルをプルダウンから選択します。
統合ユーザーの Salesforce へのアクセス権を不正アクセスから保護するために、権限なしのプロファイルを割り当てることをおすすめします。
- [Save] をクリックします。
- 新しい統合ユーザーのパスワードを更新する手順は次のとおりです。
- [Users] ペインの [Reset password(s)] ボタンをクリックします。パスワードの再設定メールが、ユーザーに関連付けられているメールアドレスに送信されます。
- メール アカウントからパスワード再設定のフローに従います。新しいパスワードをメモしてください。この後の手順で必要になります。
権限セットを構成する
統合ユーザーに適した権限セットへのアクセス権がすでにある場合は、この手順をスキップして、セキュリティ トークンを設定するに進んでください。それ以外の場合、統合ユーザーと Salesforce オブジェクトの権限を構成するには、以下の操作を行います。
統合ユーザーの権限セットを構成するには:
- [Setup] メニューで [Users] > [Permission Sets] をクリックします。
- [Permission Sets] ペインで、[New] ボタンをクリックします。
- [Permission Sets] ダイアログで、次の詳細を入力します。
- Label: 権限セットの名前を入力します。
- ライセンス: [License] プルダウンから [Salesforce] を選択します。
- [Save] をクリックします。
- [System] 設定オプションの一覧を下にスクロールして、System Permissions を選択します。
- [System Permissions] ページで、[Edit] ボタンをクリックします。
- 使用可能な権限のリストを下にスクロールし、[API Enabled] チェックボックスをオンにします。
Api 専用ユーザー権限も必要ですが、必要なセキュリティ トークンがリセットされるまで有効にすることはできません。この権限は後のステップで追加します。
- (省略可)必要に応じて [Modify All Data] と [View All Data] までスクロールして選択します。この権限は必須ではありませんが、新しいオブジェクトへのアクセス権を統合ユーザーに自動的に付与したい場合に便利です。サンドボックスでのテストにのみ、これらの権限を有効にすることをおすすめします。
- 権限リストの先頭までスクロールして、[Save] をクリックします。
- 設定を確認し、[Save] をクリックします。
Salesforce オブジェクトの権限セットを構成するには:
- [Permission Set Overview] をクリックし、メインの [Permissions Set] 構成ページに戻ります。
- [Permissions Set] ペインの [Apps] セクションから [Object Settings] を選択します。
- 下にスクロールして、権限セットを必要とする Salesforce オブジェクトを選択します。この例では、[Opportunity] オブジェクトを使用します。
- オブジェクトの詳細ページの [Edit] ボタンをクリックします。
- レコードタイプのチェックボックスを選択します。必須のレコードタイプがわかっている場合は、それらを選択します。必須のレコードの種類がわからない場合は、すべてを選択します。
- [Object Permissions] のチェックボックスをオンにして有効にします。[Read] と [View All] をおすすめします。
- 対応するチェックボックスをオンにして、読み取りアクセスまたは編集アクセスを各オブジェクト フィールドに付与します。
- ページの上部までスクロールして [Save] をクリックします。
セキュリティ トークンを設定する
統合ユーザーのセキュリティ トークンを以前に作成している場合で、パスワードをリセットする場合、新しいセキュリティ トークンが記載されたメールが自動的に送信されます。その新しいトークンを使用すると、接続されているアプリの作成に進むことができます。
セキュリティ トークンを作成していない場合は、次の手順で統合ユーザーのセキュリティ トークンをリセットします。
- 前のステップで設定したユーザー名とパスワードを使用して、統合ユーザーとして Salesforce にログインします。
- メインメニューでプロフィール写真をクリックし、[Settings] をクリックします。
- [Settings] メニューで [Reset My Security Token] を選択し、[Reset Security Token] ペインを開きます。
- [Reset Security Token] ボタンをクリックします。
- 新しいセキュリティ トークンが記載されたメールが、統合ユーザーに関連付けられているメール アカウントに届いたことを確認します。後のステップで必要になるため、新しいセキュリティ トークンをメモします。
- (省略可)権限セットのシステムの権限で Api User Only 権限を有効にします。詳細については、権限セットを構成するをご覧ください。
接続されているアプリを作成する
接続されているアプリを設定するには、システム管理権限が必要です。現在、統合ユーザーとしてログインしている場合は、必ずログアウトしてから sysadmin
として再度ログインしてください。
接続されているアプリを設定する手順は、次のとおりです。
- 歯車アイコンをクリックして、[Setup] を選択します。
- 下の図に示すように、[Setup] メニューで App Manager を検索して選択します。
- [New Connected App] をクリックします。
- 構成ペインで、次の詳細を入力します。
- Connected App Name: 接続されているアプリの名前を入力します。
- API Name: API の名前を入力します。
- Contact email: 接続されているアプリのメールアドレス(理想的にはグループのメール エイリアス)を入力します。
- API (Enable OAuth Settings): [Enable OAuth Settings] を選択します。次に、以下のとおりに設定します。
- (省略可)Callback URL: 外部サービスが検証を行う場合にのみ必要です。コールバックを指定する場合は、
http(s)://
接頭辞を必ず含めてください。 - Selected OAuth Scopes: 次のいずれかを選択します。
- Access and manage your data (api)
- ユーザーに代わってリクエストを随時実行する(refresh_token、offline_access)
- (省略可)Callback URL: 外部サービスが検証を行う場合にのみ必要です。コールバックを指定する場合は、
- [Save] をクリックします。
- [続行] をクリックします。メールアドレスに送信された確認コードを使用して、再承認を行う必要があります。
- コードの確認が完了すると、次のページにコンシューマ シークレットとコンシューマ キーが表示されます。これらの値は、Apigee の Auth モジュールを設定するときに使用されるため、メモしておきます。
- [Manage] ボタンをクリックします。
- [Connected App Detail] ページで、[Edit Policies] ボタンをクリックします。
- [OAuth Policies] セクションで、[Permitted Users] プルダウンの値を [Admin approved users are pre-authorized] に変更します。
- [Save] をクリックします。
- このページの [Profiles] セクションと [Permission Set] セクションまでスクロールし、接続されているアプリに適用するプロファイルまたは権限セットを選択します。
- 目的のプロファイルまたは権限セットを選択します。
- [Save] をクリックします。
CDC イベントを使用するための前提条件に関する手順
CDC イベントを使用するために Apigee トリガーを構成する前に、必ず Salesforce で構成済みのオブジェクトを CDC に追加してください。
- Salesforce に
sysadmin
としてログインします。 - 歯車アイコンをクリックし、[Setup] をクリックします。
- 左側のナビゲーションを使用して、[Change Data Capture] を検索して選択します。
- [Change Data Capture] 設定ページで、使用する Salesforce オブジェクトを [Available Entities] 列で見つけ、[Selected Entities] 列にドラッグします。
- [Save] をクリックします。
プラットフォーム イベントを使用するための前提条件に関する手順
プラットフォーム イベントを使用するために Apigee トリガーを構成する前に、Salesforce で次の操作を行います。
- プラットフォーム イベントを作成する
- プラットフォーム イベント用の権限を更新する
プラットフォーム イベントを作成する
プラットフォーム イベントを作成する手順は次のとおりです。
sysadmin
認証情報を使用して Salesforce インスタンスにログインします。- 歯車アイコンをクリックして、[Setup] を選択します。
- ナビゲーション パネルで「Platform」を検索して、[Platform Events] をクリックします。
- [Platform Events] ページで [New Platform Event] をクリックし、次のプロパティを設定します。
![新しいプラットフォーム イベントを示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/new-platform-event.png?authuser=1&hl=ja)
![新しいプラットフォーム イベントを示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/new-platform-event.png?authuser=1&hl=ja)
- Label
- Plural Label
- Object Name(このフィールドは自動的に入力されます)
- Publish Behavior: 次のいずれかの値を選択します。
- Publish After Commit: 条件が満たされていない場合に、イベントのストリーミングを元に戻します。
- Publish Immediately: 検証を待たずに、イベントをすぐにトリガーします。
- Deployment Status(省略可): イベントをデプロイする準備ができている場合は、[Deployed] を選択します。
![プラットフォーム イベントのラベルと公開処理の動作の設定を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/new-platform-event-2.png?authuser=1&hl=ja)
![プラットフォーム イベントのラベルと公開処理の動作の設定を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/new-platform-event-2.png?authuser=1&hl=ja)
カスタム フィールドを作成したら、[Platform events] ページで、[API Name] フィールドの値を確認します。オブジェクト名の末尾が _e のオブジェクトは、Platform Event オブジェクトを表します。CDC オブジェクトの場合は、オブジェクト名が _c で終わります。
![保存されたプラットフォーム イベントの詳細を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/api-name-publish-behavior.png?authuser=1&hl=ja)
![保存されたプラットフォーム イベントの詳細を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/api-name-publish-behavior.png?authuser=1&hl=ja)
プラットフォーム イベント用の権限を更新する
新しく作成されたプラットフォーム イベントを統合ユーザーがアクセスできるようにするには、権限セットを更新する必要があります。
権限を更新する手順は次のとおりです。
- [Setup] メニューで [Users] > [Permission Sets] をクリックします。
- [Permission Sets] ページで、前に作成した権限をクリックします。
- [Object Settings] > [Plural Label of the Platform Event] をクリックします。
- [Object Permissions] セクションで、読み取り権限と作成権限を有効にします。
- [Save] をクリックします。
![プラットフォーム イベントの権限を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/platform-event-permissions.png?authuser=1&hl=ja)
![プラットフォーム イベントの権限を示す画像](https://cloud.google.com/static/apigee/docs/api-platform/integration/images/platform-event-permissions.png?authuser=1&hl=ja)
Salesforce トリガーを追加する
新規または既存のインテグレーションに Salesforce トリガーを追加する手順は次のとおりです。- Apigee UI で、Apigee 組織を選択します。
- [Develop] > [Integrations] の順にクリックします。
- 既存のインテグレーションを選択するか、[Create Integration] をクリックして新しいインテグレーションを作成します。
新しいインテグレーションを作成する場合:
- [Create Integration] ダイアログで名前と説明を入力します。
- サポートされているリージョンのリストから、インテグレーションのリージョンを選択します。
- [Create] をクリックします。
インテグレーション デザイナーでインテグレーションが開きます。
- 統合デザイナーのナビゲーション バーで、[+ Add a task/trigger] > [Tasks] の順にクリックして、使用可能なタスクのリストを表示します。
- 既存の統合を選択するか、[Create integration] をクリックします。
- 統合エディタで [+ Add a task/trigger] > [Triggers] をクリックして、利用可能なトリガーを表示します。
- [Salesforce trigger] 要素をクリックしてデザイナーに配置します。
Salesforce トリガーを構成する
Salesforce トリガーを構成するには、次の手順で操作します。
- 統合エディタで [Salesforce trigger] をクリックして、トリガー構成ペインを表示します。
- [Salesforce instance configuration] プルダウンから Salesforce インスタンスを選択します。
Salesforce インスタンスが存在しない場合は、新しいインスタンスを作成します。詳細については、新しい Salesforce インスタンスを作成するをご覧ください。
- [Salesforce channel configuration] プルダウンから Salesforce チャネルを選択します。
Salesforce チャネルが存在しない場合は、新しいチャネルを作成します。詳細については、新しい Salesforce チャネルを作成するをご覧ください。
- イベントタイプとして CDC を選択した場合は、次のいずれかのオペレーションを選択します。
Create
Update
Delete
Undelete
特定のオペレーションまたはギャップ オペレーションが発生したときにのみトリガーが実行されます。
Salesforce トリガーは 1 つのオペレーションに対してのみ構成できます。複数のオペレーションでトリガーを実行する場合は、オペレーションごとに Salesforce トリガーを作成します。
新しい Salesforce インスタンスを作成する
新しい Salesforce インスタンスを構成するには、次の操作を行います。
- トリガーの編集可能なプロパティで、[Select a Salesforce instance configuration] > [+ Add new Salesforce instance configuration] の順にクリックします。
- [Add Salesforce instance configuration] ダイアログで、次のプロパティを設定します。
- Salesforce instance connection name: インスタンスの名前を入力します。
構成後は、この名前を使用して Salesforce インスタンスを参照します。
- Salesforce domain: インスタンスのサービス権限を入力します。ドメインは Salesforce アカウントで確認できます。例:
instance.my.salesforce.com
次の図は、Salesforce ドメインを示しています。 - Authentication profile: 認証プロファイルを選択します。
認証プロファイルが存在しない場合は、OAuth 2.0 リソース オーナー パスワード認証情報認証タイプの新しいプロファイルを作成します。次の画像は、認証プロファイルを作成するために必要なフィールドを示しています。
- クライアント ID: 接続されているアプリの設定時にメモしたコンシューマ キーを入力します。
- シークレット: 接続されているアプリの設定時にメモしたコンシューマ シークレットを入力します。
- パスワード: ユーザー パスワードを
USER_PASSWORDSECURITY_TOKEN
形式で入力します。次のように置き換えます。USER_PASSWORD
: Salesforce ユーザーのパスワード。SECURITY_TOKEN
: インテグレーション用に設定したセキュリティ トークン。
USER_PASSWORD
がtest-password
で、SECURITY_TOKEN
が737K27NCa3O6
の場合、パスワードはtest-password737K27NCa3O6
になります。
- Salesforce Organization ID: Salesforce インスタンスの組織 ID を入力します。ID は Salesforce 管理者から取得できます。
- [Add] をクリックします。
新しい Salesforce チャネルを作成する
新しい Salesforce チャネルを構成するには、次の操作を行います。
- トリガーの編集可能なプロパティで、[Select a Salesforce channel configuration] > [+ Add new Salesforce channel configuration] の順にクリックします。
- [Add Salesforce channel configuration] ダイアログで、[Salesforce object name] プロパティのオブジェクト名を入力します。
オブジェクト名がわからない場合は、Salesforce 管理者にお問い合わせください。
- [Add] をクリックします。
出力変数
Salesforce トリガーからのレスポンスを出力変数で確認できます。
CDC イベントの出力変数を次の表に示します。
変数 | データの種類 | 説明 |
SalesforceTriggerCdcPayload | JSON | 変更イベントの詳細。 |
SalesforceTriggerEvent | JSON | イベントの replayId が含まれます。 |
SalesforceTriggerSchema | 文字列 | トリガー スキーマ。 |
SalesforceTriggerCdcSnapshot | JSON | 変更イベント後のオブジェクトのスナップショット。このフィールドは、Update オペレーションと Create オペレーションでのみ使用できます。 |
SalesforceTriggerCdcRecordId | 文字列 | 更新または追加されたレコードの recordId が含まれます。recordId は、変更された Salesforce オブジェクトの識別子です。 |
次の表に、プラットフォーム イベントの出力変数を示します。
変数 | データの種類 | 説明 |
SalesforceTriggerPEPayload | JSON | 変更イベントの詳細。 |
SalesforceTriggerEvent | JSON | イベントの replayId が含まれます。 |
SalesforceTriggerSchema | 文字列 | トリガー スキーマ。 |
CdcTriggerPayload
JSON 変数です。JSON 変数には、更新されたレコード オブジェクトが含まれています。ベスト プラクティス
Salesforce 通知を使用して統合をトリガーする場合は、Salesforce トリガーの使用をおすすめします。カスタムコードを記述することなく Salesforce イベントを公開することもできます。Salesforce ケースにどんなに小さなフィールド変更があっても、Salesforce CDC イベントがトリガーされ、それによって統合もトリガーされます。このため、重大な統合ノイズが生じる可能性があります。統合をトリガーする必要がある CDC イベントのみをフィルタするには、変更イベント フィルタを使用することを検討してください。変更イベント フィルタを使用すると、統合に伴うノイズを減らし、ライセンスの制限を確実に遵守できます。
同様に、統合が不要になったときにこのトリガーを使用して、統合を非公開にすることをおすすめします。公開停止または削除されるまで、この統合は Salesforce CDC イベントとプラットフォーム イベントを引き続きリッスンします。
考慮事項
Salesforce トリガーを使用して統合を実行する前に、次の点を考慮してください。
- Salesforce では通常、1 日あたり最大 100,000 件の CDC イベントとプラットフォーム イベントを送信します。統合トリガーの CDC イベントを選択する前に、Salesforce 管理者に連絡してライセンスの制限を確認してください。
- Salesforce への一括アップロードを計画している場合は、CDC を一時停止して統合ノイズを低減し、ライセンスの制限を必ず遵守してください。
- Salesforce が公開できるイベント メッセージの最大サイズは 1 MB です。詳細については、変更データ キャプチャの割り当てをご覧ください。
- Apigee では、次のリージョンでの Salesforce CDC イベントをサポートしていません。
asia-northeast1
asia-south1
australia-southeast1
europe-west2
europe-west3
europe-west6
northamerica-northeast1
southamerica-east1
us-east4
us-west2