Amazon AppFlow で簡単に SaaS のサービスと連携してみた

記事タイトルとURLをコピーする

はじめに

こんにちは。冬は毎年ミカンを食べすぎてしまうCI部の加藤です。 みなさん今年の年末年始はいかがお過ごしでしたでしょうか。

今回は、2020年4月に発表された Amazon AppFlow についてご紹介していきたいと思います。
最近のre:InventのUpdateはこちらになります。 【re:Invent 2020】AppFlowがHoneyCodeへのデータ送信に対応しました! - サーバーワークスエンジニアブログ

AppFlow とは

公式ドキュメントを読むと以下のよう記載があります。

Amazon AppFlow は、Salesforce、Marketo、Slack、および ServiceNow などの Software-as-a-Service (SaaS) アプリケーションと、 Amazon S3 や Amazon Redshift などの AWS サービスとの間で、 たった数回のクリックでデータを安全に転送できるフルマネージド統合サービスです。

AWS と SaaS のサービス間でデータ送信を設定できます。
また、転送時と保管時にデータは自動的に暗号化がなされます。 対応している SaaSのサービスであれば、PrivateLink を利用してプライベートな通信も可能です。

AppFlowが登場することで何が変わったのか

今までは ALB+EC2 や Amazon API Gateway+AWS Lambda など複数のサービスを利用して連携する必要がありました。
そのため、コストや実装方法について課題や考慮する点がありました。
しかし AppFlow が登場したことにより、AppFlow の設定のみでコーディングなどすることなく簡単に連携できるようになりました。

利用可能なサービス

2021/01/05現在において、接続可能な AWS サービス、SaaS は以下のようになっております。
サービスの発表から今日まで頻繁にアップデートがあり、今後も対応する AWS サービスや SaaS アプリケーションは増えていきそうです。

ソース、宛先で選択可能

AmazonS3、Salesforce

ソースのみ選択可能

Amplitude、Datadog、Dynatrace、GoogleAnalytics、InforNexus、Marketo、Salesforce Pardot、ServiceNow、Singular、Slack、トレンドマイクロ、Veeva、Zendesk

宛先のみ選択可能

AmazonEventBridge、AmazonHoneycode、Amazon Lookout forMetrics、AmazonRedshift、Snowflake、Upsolver

設定手順

今回は Slack から S3にデータを転送します。

手順1 フローの詳細を指定

[フローを作成]を選択して設定を開始しましょう。
まずは、フローの名前を設定します。
フローの名前以外はオプションになりますので、適宜設定してください。 f:id:swx-risato-kato:20210105155148p:plain

手順2 フローを設定

Slack側の設定

今回はSlack から必要情報を取得します。
Slack アカウントにログインし、[管理]、[アプリを管理] の順に進みます。
右上隅で、[ビルド]、[Your Apps] の順に選択します。
アプリをすでに設定している場合は、設定しているアプリを選択します。
まだ設定していない場合は [Create an App] から新規で設定します。

[Basic Information] セクションで [App Credentials] に移動し、[Client ID] と[Client Secret]を控えておきます。 f:id:swx-risato-kato:20201228175039p:plain

[OAuth & Permissions]セクションの[ OAuth Tokens & Redirect URLs ]から Redirect URLs を設定します。 f:id:swx-risato-kato:20210105141308p:plain 東京リージョンの場合は以下のURLを設定します。
https://ap-northeast-1.console.aws.amazon.com/appflow/oauth

[Scopes]から User Token Scopes を設定します。 f:id:swx-risato-kato:20210105142355p:plain

Slack側の設定はこれで完了です。

AWS側の設定

Slack に接続するための情報を入力します。
送信元名に Slack を選択し、[接続する]を選択します。

Slack 側の設定の際に控えておいた[ Client ID ] と[ Client Secret ]の情報、ワークスペースの情報、接続名(任意)を入力して[続行]を選択します。 f:id:swx-risato-kato:20210105174526p:plain 必要な情報はサービスによって異なりますので、公式ドキュメントで連携させたいサービスの要件をご確認ください。 docs.aws.amazon.com

[ Slack オブジェクト]、 [ Slack チャネル]を選択します。 f:id:swx-risato-kato:20210105143442p:plain

次に、送信先の情報を設定します。今回は Amazon S3 に送信します。
送信先名に Amazon S3 を選択し、データを保存するバケット名を指定します。 f:id:swx-risato-kato:20210105144327p:plain

フロートリガーを設定します。
今回はオンデマンドで実行します。 f:id:swx-risato-kato:20210105144646p:plain

手順3 データフィールドをマッピング

送信元のフィールド名を選択します。
今回は User、Text を選択しています。 f:id:swx-risato-kato:20210105162658p:plain データフィールドはフロー作成後にも変更可能です。

手順4 フィルターを追加する

今回は特に設定せずに、次に進みます。

手順5 確認して作成

特に問題がなければそのまま[フローを作成]を選択します。
フローを実行します。正常に完了すると画像のようなメッセージが出ます。 f:id:swx-risato-kato:20210105150451p:plain 記載されている URL から飛ぶと新しくフォルダとファイルが追加されていました。
ファイルの内容を確認すると、指定した User と Text のデータフィールドの情報が取得できていました! f:id:swx-risato-kato:20210105152044p:plain

Slack のデータを Amazon S3 に無事転送できました。

最後に

とても簡単にSlackのデータを AWS のサービスに送信することができました。
みなさんもこの機会に、ぜひ利用してみてください!

参考: Getting started with Amazon AppFlow - Amazon AppFlow