こんにちは、ロジカル・アーツの大島です。
本記事では、AWSのサービスであるAppFlowを用いてSalesforceのデータをS3に出力するシンプルな構成をご紹介します。
Amazon AppFlowとは
Amazon AppFlowは、ノンコーディングでSalesforceやSlackなどのSaaSアプリケーションと、S3やRedshiftなどのAWSサービスとの間でデータを連携するサービスです。
AppFlowでデータ連携することの利点
使い易さ
AppFlowコンソールから、数クリックにてデータ双方間連携を構築する事が可能です。転送タイミングもオンデマンドかスケジュールに従って実行するか選ぶことができます。
安全性
Amazon AppFlowでは稼働中と保存中のデータが自動的に暗号化されるため、転送中のデータの安全性が確保されます。AWSとSalesforceで非公開接続設定がされている場合、AWS PrivateLink を使用してデータがインターネットにさらされることを減らすことで、データのセキュリティを簡素化できます。
データフローを作成する
フローに名前をつける
※SalesforceとAWS両方のアカウントを保持している事を前提として進めていきます。 AWSにサインインし、サービス検索に「appflow」と入力し Amazon AppFlow を選択します。
フローを作成をクリックする。
フローの詳細にて作成するフローに名前をつけて説明を入力します。 ※この例では「logical-oshima-demo」と名付けます。
暗号化とタグ付け(任意)
データ暗号化に際し、既存のAWS KMSキーを選択するか、新しいAWS KMSキーを作成するかを選択するかして、暗号化方式を選択できます。 ※この例では、デフォルトの暗号方式を使用します。
続いて、[次へ]をクリックします。
Salesforceに接続する
送信元名から [Salesforce] を選択します。 Salesforce接続を選択します。今回は接続を新規作成し接続先作成から行います。 ポップアップウィンドウが開きます、Salesforce環境に[Production]と[Sandbox]がありますが、[本番環境]と[検証環境]と読み替えていただいて構いません。 今回は[Production]を選択します。今回接続元としているSalesforceは非公開接続となっていませんので、PrivateLinkは[無効]を選択します。 接続名を入力後に[接続する]をクリックするとSalesforce認証ページに移動しますので、Salesforceアカウントにてログインを行ってください。
特定の Salesforce オブジェクトを取得するか、Amazon S3に対するSalesforceイベント (変更データキャプチャやプラットフォームイベント) に登録するかを選択する必要があります。今回はSalesforceに登録されているカレンダーを取得します。
送信先を設定する
送信先に[Amazon S3]を選択します。バケットの詳細から、S3バケットを選択します。※予めS3バケットを作成しておく必要があります。 ファイル形式の設定から、各種のデータ形式 (JSON、CSV、Parquet)、ファイルの命名の方式を指定する事ができます。
フローを設定する
フローをいつ実行するかを選択します。オンデマンドオプションを使用した場合は、設定を保存するとすぐフローが実行されます。今回は[オンデマンドで実行]を選択します
データフィールドをマッピング
SalesforceとAmazon S3の項目を関連付けします。項目を手動で対応付けするか、項目の対応付けが行われているcsvファイルをアップロードすることができます。今回は手動で行います。送信元フィールド名のプルダウンにSalesforceの連携可能項目が表示されますので項目を選択します。 [フィールドを直接マッピング]をクリックすると[マッピングされたフィールド]欄に選択した送信元フィールドが表示されますので、改めて連携対象項目を選択します。 [パーティションと集約の設定]セクションで、出力を行うディレクトリの情報を設定と出力するファイルの出力方法を設定できます。 [妥当性確認]セクションで、項目ごとに特定の検証を追加して、実行する特定のアクションを指定できます。
[次へ] をクリックします。
フィルターを追加する
連携対象データを絞り込む事ができます。 試しに今回は[2023/2/1 0:00:00 以降に作成されたデータ]という条件を設定します。
[次へ] をクリックします。
フローを確認し実行する
フローの設定を確認して、[フローを作成]をクリックします。これでフローを実行する事ができます。
最後に[フローを実行]をクリックし、作成したフローを実行します。
連携結果を確認する
サービス検索に「s3」と入力し S3 を選択します。
送信先に選択したバケットに、連携されたファイルが配置されている事が確認できます。
オブジェクトを選択し、[開く]をクリックすると連携されたファイルをダウンロードする事ができます。
終わりに
AWSとSalesforceの親和性から、双方間のデータ連携を行う要件は多いかと思います。その際にノンコーディングでかつAWSの標準サービスであるAppFlowを用いる事により、人的リソース削減が見込まれます。 往々にして標準で提供されている機能では要件を満たさない事が多いものですが、データ連携個所がクリティカルパスとなるのもまた事実です。 その事からも連携部は標準機能でシンプルにAppFlowを使用するのがよろしいのかと思いますので、ご一考してみてはいかがでしょうか。