※株式会社POLテックカレンダー2021 8日目の記事です。 前回の記事
目的
Salesforce上のデータの変更を自前のAPIサーバに伝えたい。
ただしApex(ゲームではない)は書きたくない。知見がないので。
やり方
連携基盤をAWS上に構築するなら結論↓これ。IaCしなければノーコード!
[Salesforce] -> AppFlow -> EventBridge -> [APIサーバ]
AppFlowは「SaaSアプリケーションとAWSサービス間でコードなしにデータを安全に転送できるようにする統合サービス」
ってことでまさにやりたいやつ。
流れの概要
- AppFlowにSalesforceの変更イベントが飛んでくる。変更された項目や更新日時等が含まれる。
- EventBridgeのイベントバスに変更イベントが流れる。
- ルールのターゲット(API送信先)に指定したAPIサーバにリクエストを飛ばす。リクエストの本文はイベントの中身を変換する。
以上!としたいところだけどデバッグ、ログ、認証、監視、IaCの観点で補足(したかった)。
認証
Api Serverで認証したいケース。
実はEventBridgeのAPI送信先はOAuthのClient Credentialsに対応している。
なのでCognito等のIDaaSで認証情報を。。
力尽きたので後で追記します。
ログ
開発段階でもデバッグの際に有用なので、イベントのロギングはとりあえずやっとけばいいと思う。
datadogに飛ばす例。これはAPI Key認証を使って飛ばしてる。
参考
実はAppFlowのワークショップが用意されている。
ワークショップ概略
SalesforceからデータをAWSに持ってくる方法は二つ。
I. データの一覧を取得
Salesforceから一度に複数のデータを取得し、S3に保存。
リアルタイム性が不要ならこっちでいい。分析とか。
実行は2択
- スケジュール実行
- 手動実行
Ⅱ. 変更イベントの取得
Salesforce上のデータの変更時に都度Create/Update/Deleteイベントを飛ばしてもらう。
今回のように、変更イベントに対してリアルタイムに処理を実行したい場合はこっち。
代替案
今回と同じようなことはGCP(Apigee)の方でも出来そう。
AppFlow + EventBridge + StepFunctions感ある。
承認ステップ(メール)を挟めるの凄い。
まとめ
「Salesforceって絶対、AWSのこと好きですよねー」