Amazon Appflow で SaaS データ取込みを自動化してQuickSightで可視化してみた

by 宮本航太 | 2021年04月15日

こんにちは、テクニカルサポートエンジニアの宮本(@miyamon44)です。

昨日、こちらの JAWSUG TOHOKU のオンラインイベントに参加してきました!

jaws-tohoku.doorkeeper.jp

エモい話やこれまでの JAWSDAYS 振り返り、 Elastic Beanstalk 利用時のポイント、 aws-nuke というアカウントのリソースを全消ししてくれるツールの紹介など、色々と学ぶことができました。

私自身もその中の1枠で Amazon AppFlowで SaaS データの自動連携~可視化という内容で登壇しました。

speakerdeck.com

スライドだけでは設定内容など細かく載せることができなかったので、この記事で実際にやってみた手順を紹介したいと思います。

Amazon AppFlow とは?

https://aws.amazon.com/jp/appflow/ f:id:sennanvolar44:20210412182415p:plain

AmazonAppFlowは、SaaSプラットフォームとAWSサービス間でデータを転送できるようにするフルマネージド統合サービスです。数回クリックするだけで、Google AnalyticsからRedshiftデータウェアハウスへのデータ転送を設定できます。また、S3に保存されているデータを Salesforce に転送して戻すこともできます。

シナリオ

f:id:sennanvolar44:20210413234756p:plain
今回はシンプルに AppFlow を使って Salesforce のデータを S3 に取り込み、途中 Glue クローラーで取得データからスキーマ情報を生成しデータカタログに登録します。登録が済んだら Athena でテーブルを作成し、QuickSight で可視化していきます。
最初に限り色々と設定する箇所はありますが、一度作ってしまえばあとは QuickSight を参照するだけになります。 また、AppFlow は定期実行ができるので、日々更新されるデータを参照することができるようになりますね。

手順

今回は Salesforce を使いますので、事前に Salesforce アカウントは取得しておいてください。

Amazon AppFlow でSaaS データの取得

それでは AppFlow を選択し、フローを作成していきます。まずはフロー名を設定します。
f:id:sennanvolar44:20210412214450p:plain

接続元をここで選択できるようになっています。見ての通りですが、S3 以外はSaaS しかないですね。今回は Salesforce を選択します。
f:id:sennanvolar44:20210412214812p:plain

f:id:sennanvolar44:20210412215048p:plain

他のデータソースの場合は不明ですが、Salesforce だとイベントドリブンでジョブを実行できるようですね。この辺は面白いですね。
f:id:sennanvolar44:20210412215337p:plain

イベント以外であれば Salesforce オブジェクトを選択できます。今回はこのオブジェクトを指定します。
f:id:sennanvolar44:20210412215846p:plain

次に連携先の指定を行います。
連携先はまだこれだけのようですが、SaaS への連携もできるようです(今はSalesforce、Zendesk )
はい、今回はノーマルに S3 を指定します。
f:id:sennanvolar44:20210412221915p:plain

その他の設定として、出力ファイル形式やファイル名にタイムスタンプを付与するかなどいくつかのオプションを指定できます。
f:id:sennanvolar44:20210412222859p:plain

フローのトリガーを設定できますので、スケジュール実行で設定します。また、増分転送にするかどうかも設定できるようですね。
f:id:sennanvolar44:20210412223524p:plain

次のマッピング処理では色々と変換処理を設定できます。例えばデータのマスキング指定であったり、文字列の何文字以降の切り捨て指定、項目の連結、データの妥当性チェックした結果取り込まないなどを設定することができます。
今回は全項目マッピングのみとします。
f:id:sennanvolar44:20210412224424p:plain

最後にフィルター条件を設定できます。
f:id:sennanvolar44:20210412224804p:plain

これで AppFlow のフロー作成が完了ですので、フローをアクティブ化ボタンをクリックします。
f:id:sennanvolar44:20210412225238p:plain

フロー実行後。これで Appflow で SaaS 連携が完了できました。
f:id:sennanvolar44:20210412225503p:plain

Glue クローラーで連携データのスキーマ情報をデータカタログに登録

次は連携されたデータを参照してスキーマ情報を自動生成するクローラーを追加します。
f:id:sennanvolar44:20210413063304p:plain

クローラーに任意の名前を付与します。
f:id:sennanvolar44:20210413063845p:plain

このまま進みます。
f:id:sennanvolar44:20210413064023p:plain

データストアに S3 を設定し、インクルードパスに対象のバケットを選択します。
f:id:sennanvolar44:20210413064226p:plain

なお、接続については初回は作成する必要があるようです。VPC、サブネットマスク、セキュリティグループを指定します。
f:id:sennanvolar44:20210413064558p:plain

今回は別のデータストアは追加はしません。
f:id:sennanvolar44:20210413064700p:plain

IAM ロールを今回は新規作成にしました。
f:id:sennanvolar44:20210413064929p:plain

オンデマンドで実行します。
f:id:sennanvolar44:20210413065036p:plain

出力先のデータベースを追加します。これで設定が完了したので、クローラーを実行します。
f:id:sennanvolar44:20210413065208p:plain

クローラー実行後、
f:id:sennanvolar44:20210413065702p:plain

このようにスキーマ情報が作成されます。
f:id:sennanvolar44:20210413094942p:plain

データ型は連携されたデータをもとに推論して設定してくれますが、手動で変更することもできます。
f:id:sennanvolar44:20210413095118p:plain

Athena で連携データを参照できることを確認

この時点で QuickSight から データソースにアクセスできるようになっています。というのも、既に Athena のデータソースに AwsDataCatalog が登録されているからです。
f:id:sennanvolar44:20210413123019p:plain

ただ、他のデータソースと統合したい、テーブルの構成を変更したい場合は Create Table as Select (CTAS) で新たにテーブルを作成するのも良いですね。

QuickSightで可視化

最後に QuickSight に移動してデータソースを設定します。データソースに Athena を選択して対象のテーブルを選択することで AppFlow で連携したデータを使用することができるようになります。
f:id:sennanvolar44:20210413234427p:plain

あとはお好みで可視化します。
f:id:sennanvolar44:20210413234438p:plain

スケジュール実行する場合

今回は AppFlow で全件取込みにしているので、ファイルは違えど同じような内容のファイルが存在してしまい、Athena や QuickSight で参照すると同一レコードが複数存在してしまいます。
f:id:sennanvolar44:20210413235150p:plain

これを避けるために、連携直後などに既存ファイルを削除か別なバケットに移動させるAWS Batch などを用意しておくと、重複レコードが表示されることはなくなります。

おわりに

いかがでしたでしょうか。今回初めて Amazon AppFlow を使ってみましたが、あまり悩むところなくすんなりデータ転送ができました。
次回の JAWSUG TOHOKU はお盆前くらいにはやるようなので、また参加して新しい情報を得たいと思います。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。