こんにちは、テクニカルサポートエンジニアの宮本(@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/
AmazonAppFlowは、SaaSプラットフォームとAWSサービス間でデータを転送できるようにするフルマネージド統合サービスです。数回クリックするだけで、Google AnalyticsからRedshiftデータウェアハウスへのデータ転送を設定できます。また、S3に保存されているデータを Salesforce に転送して戻すこともできます。
シナリオ
今回はシンプルに AppFlow を使って Salesforce のデータを S3 に取り込み、途中 Glue クローラーで取得データからスキーマ情報を生成しデータカタログに登録します。登録が済んだら Athena でテーブルを作成し、QuickSight で可視化していきます。
最初に限り色々と設定する箇所はありますが、一度作ってしまえばあとは QuickSight を参照するだけになります。
また、AppFlow は定期実行ができるので、日々更新されるデータを参照することができるようになりますね。
手順
今回は Salesforce を使いますので、事前に Salesforce アカウントは取得しておいてください。
Amazon AppFlow でSaaS データの取得
それでは AppFlow を選択し、フローを作成していきます。まずはフロー名を設定します。
接続元をここで選択できるようになっています。見ての通りですが、S3 以外はSaaS しかないですね。今回は Salesforce を選択します。
他のデータソースの場合は不明ですが、Salesforce だとイベントドリブンでジョブを実行できるようですね。この辺は面白いですね。
イベント以外であれば Salesforce オブジェクトを選択できます。今回はこのオブジェクトを指定します。
次に連携先の指定を行います。
連携先はまだこれだけのようですが、SaaS への連携もできるようです(今はSalesforce、Zendesk )
はい、今回はノーマルに S3 を指定します。
その他の設定として、出力ファイル形式やファイル名にタイムスタンプを付与するかなどいくつかのオプションを指定できます。
フローのトリガーを設定できますので、スケジュール実行で設定します。また、増分転送にするかどうかも設定できるようですね。
次のマッピング処理では色々と変換処理を設定できます。例えばデータのマスキング指定であったり、文字列の何文字以降の切り捨て指定、項目の連結、データの妥当性チェックした結果取り込まないなどを設定することができます。
今回は全項目マッピングのみとします。
最後にフィルター条件を設定できます。
これで AppFlow のフロー作成が完了ですので、フローをアクティブ化ボタンをクリックします。
フロー実行後。これで Appflow で SaaS 連携が完了できました。
Glue クローラーで連携データのスキーマ情報をデータカタログに登録
次は連携されたデータを参照してスキーマ情報を自動生成するクローラーを追加します。
クローラーに任意の名前を付与します。
このまま進みます。
データストアに S3 を設定し、インクルードパスに対象のバケットを選択します。
なお、接続については初回は作成する必要があるようです。VPC、サブネットマスク、セキュリティグループを指定します。
今回は別のデータストアは追加はしません。
IAM ロールを今回は新規作成にしました。
オンデマンドで実行します。
出力先のデータベースを追加します。これで設定が完了したので、クローラーを実行します。
クローラー実行後、
このようにスキーマ情報が作成されます。
データ型は連携されたデータをもとに推論して設定してくれますが、手動で変更することもできます。
Athena で連携データを参照できることを確認
この時点で QuickSight から データソースにアクセスできるようになっています。というのも、既に Athena のデータソースに AwsDataCatalog が登録されているからです。
ただ、他のデータソースと統合したい、テーブルの構成を変更したい場合は Create Table as Select (CTAS) で新たにテーブルを作成するのも良いですね。
QuickSightで可視化
最後に QuickSight に移動してデータソースを設定します。データソースに Athena を選択して対象のテーブルを選択することで AppFlow で連携したデータを使用することができるようになります。
あとはお好みで可視化します。
スケジュール実行する場合
今回は AppFlow で全件取込みにしているので、ファイルは違えど同じような内容のファイルが存在してしまい、Athena や QuickSight で参照すると同一レコードが複数存在してしまいます。
これを避けるために、連携直後などに既存ファイルを削除か別なバケットに移動させるAWS Batch などを用意しておくと、重複レコードが表示されることはなくなります。
おわりに
いかがでしたでしょうか。今回初めて Amazon AppFlow を使ってみましたが、あまり悩むところなくすんなりデータ転送ができました。
次回の JAWSUG TOHOKU はお盆前くらいにはやるようなので、また参加して新しい情報を得たいと思います。
関連コンテンツ