Amazon AppFlowでSalesforce ⇔ S3の連携を試してみた

Amazon AppFlowでSalesforce ⇔ S3の連携が簡単にできるようになりましたので紹介します。
2020.04.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

 こんにちは、福岡オフィス所属、IT推進室の井手です。新サービスAmazon AppFlowがリリースされました。簡単にSalesforceとの連携機能を触ってみたので紹介します。結論、これは便利です・・!  

Amazon AppFlowとは

 一言で書くと、「SaaS⇔SaaS、SaaS⇔AWSサービス、AWSサービス⇔AWSサービス間でデータ転送が出来るサービス」です。詳しくはこちらを参照して下さい。

・【速報】SaaSアプリケーションやAWSサービス間で安全にデータ連携が行えるフルマネージドサービス「Amazon AppFlow」がリリースされました!
・New – Announcing Amazon AppFlow  

やってみた

共通の準備

1. S3バケットの準備

先回りした対応ですが、今回の連携にS3を利用するのでバケットを予め用意する必要があります。パブリックアクセスをブロックする設定で作成しました。

2. サービストップを開きフローを作成をクリック。

3. フロー名を入力。

Salesforce ⇒ S3

1.送信元、送信先を設定。

以下のように設定をしました。顧客はクラスメソッドでの取引先のラベルです。

2.マッピングを行う。

以下のようにマッピングを設定しました。ここでは、顧客名、都道府県+市区郡を連結させた新たなフィールドをマッピングしています。

オプションの妥当性確認は、フィールドを条件によって確認しフローを終了したり、レコードを無視したりできるようです。ただし、主に条件が数値を想定しているようなのでここでは設定をしていません。

3.フィルターを設定する。

 今回は設定していませんが、以下のように、妥当性確認と同じく条件設定ができます。ただしフィルターは条件を満たすレコードだけが転送されるようです。条件は今の所完全一致のみが選択できるようです。

4.確認画面で確認しフローを作成をクリック。

これで完成です。今回はオンデマンド実行なのでコンソールからフローを実行をクリックします。

成功のメッセージが表示され、以無事S3バケットにjson形式で保存され下のようにダウンロードできました。

S3 ⇒ Salesforce

1.Salesforceに転送するcsvファイルの用意。

 以下のGoogleスプレッドシートを用意しcsvエクスポート後、S3に配置しておきます。

2.送信元、送信先を設定。

以下のように設定しました。ほぼSalesforce ⇒ S3の場合と入れ替わっただけですが、送信元のS3はcsvを指定する必要があります。

3. エラー処理の設定

 今回は設定していませんが、ここはSalesforce ⇒ S3と違う所です。エラー時の挙動や転送出来なかったレコードをS3バケットに書き込む事ができます。

4.マッピングを行う。

Salesforce ⇒ S3同様にマッピングをします。直感的に出来るので迷いはありませんでしたが、S3からの場合は式を設定できませんでした。


オプションの妥当性確認は、Salesforce ⇒ S3同様の設定が出来ましたがここでは設定をしていません。

5.フィルターを設定する。

 妥当性確認はフィールド指定が出来ましたが、フィルターはフィールドが選択できませんでした。今後出来るようになるかもしれませんが、現時点ではcsv配置時点で絞り込む等、注意が必要かと思いました。

6.確認画面で確認しフローを作成をクリック。

 こちらもこれで完成です。オンデマンド実行なのでコンソールからフローを実行をクリックします。

無事作成されていました。

何が嬉しいか

 簡単に思いつくだけで以下のようなメリットがあると思いました。

  • Salesforce/AWSを知らなくても簡単にレコードをSalesforce/S3にアップロード/Insertできる
  • バックアップの自動化

これまで、Salesforce ⇒ AWSの連携を考える場合、ApexやLambdaの実装、BIツールを利用する等の方法がありました。この部分のレコードのクエリだけをAppFlowに任せ、S3に配置することで、取り回ししやすくなります。例えば、社内のエンジニアがSalesforceのレコードを参照したいケース等にも活用できそうです。
バックアップについては、Salesforceの場合、標準機能のマンスリーエクスポートでバックアップのスケジュールは出来ますが、メールを受信し、URLを開き1ファイルずつダウンロードする必要があり少々手間がかかります。AppFlowはスケジュール実行が出来るので、(S3/AppFlow自体の課金やSalesforceのAPI消費量等考慮事項はありますが)同等の処理が実現でき手間が減らせそうです。

さいごに

 個人的にもAppFlowの登場で、サクッとレコードをS3に移動させる事が出来るので、データ連携の選択肢が増えて嬉しいです。どなたかの参考になれば幸いです。