search
LoginSignup
51

More than 1 year has passed since last update.

posted at

updated at

Organization

AWSの新サービス「Amazon AppFlow」でSaaS-AWS間のデータ連携を試してみた

はじめに

2020/4/23にAWSの新たなサービスとしてAmazon AppFlowなるものが登場しました。
このサービスを検証し、どんな使い道やメリットがあるのかを探ってみました。

更新履歴

2020/4/23 : 初版。サービスリリースに合わせて執筆
2020/9/15 : 更新。S3に出力可能なファイルのフォーマットに、JSONに加えて新たにCSVとParquetが指定可能に

Amazon AppFlowとは?

まずは、公式サイトの英文を翻訳して紐解いてみます。
https://aws.amazon.com/jp/appflow/

※引用

Amazon AppFlowは、Salesforce、Marketo、Slack、ServiceNowなどのSoftware-as-a-Service(SaaS)アプリケーションと、Amazon S3やAmazon RedshiftなどのAWSサービスとの間で、数回のクリック操作によりデータを安全に転送できる、フルマネージド統合サービスです。
AppFlowを使用すると、選択した頻度でほぼすべての規模でデータフローを実行できます。頻度はスケジュール、ビジネスイベントへの応答、またはオンデマンドとなります。
AppFlowには、マッピング、マージ、マスキング、フィルタリング、検証などの強力なデータ変換機能が含まれており、追加の手順なしで、フローの構成要素としてすぐに使用できる豊富なデータを生成できます。
AppFlowは、移動中のデータを自動的に暗号化し、ユーザーがAWS PrivateLinkと統合されているSaaSアプリケーションのパブリックインターネット経由でデータが流れるのを制限でき、セキュリティの脅威への露出を減らします。

AppFlowは、データのソースとしてAmazon S3および13 SaaSアプリケーションをサポートし、宛先としてAmazon S3、Amazon Redshift、Salesforce、およびSnowflakeをサポートします。詳細については、AppFlowのインテグレーションページにアクセスしてください。

AppFlowを使用するための前払い料金や料金はありません。お客様は、実行するフローの数と処理されるデータの量に対してのみ支払います。

AWSマネジメントコンソールを使用すると、AppFlowを数分で開始できます。データソースと宛先を選択し、フロートリガーを指定し、フィールドをマップし、データ変換または検証を追加してから、フローを実行します。

AppFlowは現在、一般的に次のリージョンで利用可能です:米国東部(バージニア北部)、米国東部(オハイオ)、米国西部(北カリフォルニア)、米国西部(オレゴン)、カナダ(中央)、アジア太平洋(シンガポール)、アジア太平洋(東洋)、アジアパシフィック(シドニー)、アジアパシフィック(ソウル)、アジアパシフィック(ムンバイ)、ヨーロッパ(パリ)、ヨーロッパ(フランクフルト)、ヨーロッパ(ロンドン)、南アメリカ(サンパウロ)。

上記を読むと、本質的には、サードパーティのSaaSとAWSのマネージドサービスの間でデータを安全に送信 (連携) できることがポイントのようです。
また、SaaS間連携にも使え、例えばSalesforce to Salesforceなどが可能となるようです。

AppFlowを設定してみる

イメージや特徴を掴むために、まずはとにかく触ってみようということで、試してみます。

AWSマネジメントコンソールにアクセスします。
https://ap-northeast-1.console.aws.amazon.com/appflow/home?region=ap-northeast-1#/
image.png

「フローの作成」を押すと、すぐにウィザードが開くので、基礎情報を入力していきます。
image.png

暗号化オプションとタグを指定します。
ここまではあまり難しくありません。
image.png

次にデータの送信元を選びます。
ここではSlackとしてみました。
image.png

Slackを選んだ後、サービスとの接続を行います。
親切に設定方法が書いてあるので、楽々です。
image.png

もしSlackでアプリを1つも作っていない場合は、ここでテスト用で構わないのでアプリを1つ作っておきます。
以下URLにアクセスして、右上の「Your Apps」を押し、設定します。
https://api.slack.com/apps

Amazon AppFlowとSlackの間は、OAuthで認証するようなので、アプリを作った後にOAuthの設定をします。
画像のURLが途中で切れていますが「https://ap-northeast-1.console.aws.amazon.com/appflow/oauth」を入力します。

入力後、AppFlowがアクセスできるSlackの情報について聞かれるため、確認して許可します。
image.png

認証が完了すると、送信元の情報やチャネルを入力できますので設定します。
image.png

次に、送信先を選びます。
今回はAmazon S3を選んでみます。
S3はバケット以下のパスを指定するだけなので楽々です。
image.png

2020/9/15追記 : この画面で「その他の設定」を開くと、出力されるファイルのフォーマットなどが選択できます。
2020/9/14のアップデートで、S3に出力する際のファイルのフォーマットをJSON、CSV、Parquetから選択できるようになっています。
今回は、JSONを選んで次に進みます。

image.png

次にフローの実行方法について選びます。
3パターンありますが、今回はオンデマンドを選んでみます。
image.png

次の画面では、データフィールドのマッピングを設定します。
image.png

プルダウンを開くと、送信元のSaaS (Slack) で持つデータのフィールド名が列挙されています。
とりあえず全部選んでみると、以下のようになります。
image.png

「フィールドを直接マッピングする」を押すと、マッピングの結果が表示されます。
image.png

ここで、フィールドごとに値をどう処理するかを設定できます。
例えば「値をマスクする」を選ぶと、そのフィールドの値はすべて * (アスタリスク) で置換されます。
image.png
この設定を活用すると、例えば個人情報を含むフィールドだけをマスキングして送信するといったことが可能となります。

また、複数のフィールドを選んで結合することもできます。
(以下は適当に試してみた図)
image.png

さらに、データの値のチェックもでき、特定のフィールドに値が入っていない時にスキップしたりできます。
image.png

フィルターで条件も指定できます。
image.png

最後に設定内容を確認し、フローを作成すると、以下の通り出来上がります。
image.png

送信元SaaSにデータを用意

今回、送信元をSlackにしましたので、Slackに適当に会話を書き込んでおきます。
image.png

AppFlowのフローを実行

フローを実行してみます。
実行が完了すると、緑背景で結果が表示されます。
image.png

フローの実行が完了すると、SlackからS3にデータが送信 (出力) されます。
image.png

S3に送信されたデータを開くと、先に指定していた通り、JSON形式でデータが表示されました。
image.png

以上のように、AppFlowを使って、SaaSからAWSマネージドサービスにデータを送信できました。

考えられる使い道の例

  • Webサイトのアクセスデータをエクスポート、加工、分析
    image.png

  • 営業データのエクスポート、加工、分析
    image.png

  • 既にS3に存在するデータを、規則的に一括変換 (ソースにcsv縛り有)
    image.png

まとめ

AppFlowは、サービス間のデータ連携に使うブローカーのような役割と言えそうです。

上記の手順を振り返っても分かるように、非常に簡単にデータ連携ができるようになります。

また、注目すべきは、単なる連携だけではなく、データのマスキングや切り捨てが容易であり、これらの処理にプログラムでの作りこみが不要になる点でしょう。
この点は、公共や金融等の、個人情報等の取り扱いが大変厳しく、データの性質に応じて保管基準・方法が厳格に分けられている業界やシステムにおいて、非常に重宝しそうです。

また、SaaSが持っているデータをS3に持ってくることができれば、その後Athena、Glue、QuickSight等を使って、分析・可視化も簡単にできます。

AppFlowを使いこなすことで、SaaSとAWSをまたぐデータの取り扱いも、安全性や機密性等を確保しつつ、よりスピーディーに構築できそうです。

参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
51