調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

AWS AppFlowをつかってSlackからS3への連携を試してみる。


目標

AppFlowとか言う楽しげなサービスが発表されました。(

Amazon AppFlow は、Salesforce、Marketo、Slack、および ServiceNow などの Software-as-a-Service (SaaS) アプリケーションと、Amazon S3Amazon Redshift などの AWS サービスとの間で、たった数回のクリックでデータを安全に転送できるフルマネージド統合サービスです。
[公式より引用-
https://aws.amazon.com/jp/about-aws/whats-new/2020/04/introducing-amazon-appflow/

  • ]

いままで、このあたりの連携はAPI GatewayやらLambdaやらでピタゴラしていたのではないでしょうか(やったことないんだけど)
送信元、送信先を指定してサクサクっと連携できます。早速やってみました。
今回はSlack->S3への連携を試してみます。
※Saleceforceから繋いで見たかったのですが、どうにもsalaceforce側からデータが来ず・・・slackでやってみました。

AWS側の操作はコンソールを使用してセットアップしました。
大きく3ステップで完了です。
・送信元(Slack)の準備
・S3の準備
・AppFlowのセットアップ
です。

送信元(Slack)を準備する

・連携用のSlackアプリを準備する。
・準備したSlackアプリをワークスペースにインストールする。
の2ステップが必要になります。

連携用のSlackアプリを準備する。

slack側の操作になりますが。
gyazo.com
右上のビルドを選択
gyazo.com
Your AppsからCreateを選択。
gyazo.com
連携したいワークスペースを選んで作成
gyazo.com
まずはCredentialsから情報を保存控えておきます。
必要な情報は
・Client IDとClient Secretの二つです。
gyazo.com

OAuth&Permissionを選択して、権限周りの設定をします。
gyazo.com
Add AuthScopeで、必要なスコープを放り込みます。
AWS Documentsより、必要なScopeは以下
channels:history
channels:read
groups:history
groups:read
im:history
im:read
mpim:history
mpim:read
gyazo.com
Redirect URLを設定します。こちらもドキュメントの同じ場所に書かれている
https://console.aws.amazon.com/appflow/oauth
をセットします。
※ us-east-1 リージョンに固定されるので、別リージョンを使用する場合は
https://region.console.aws.amazon.com/appflow/oauth
でregionのところを任意のリージョンに差し替えてみてください。us-west-1につなぐ場合は https://us-west-1.console.aws.amazon.com/appflow/oauth となります。
gyazo.com

準備したSlackアプリをワークスペースにインストールする

インストールボタンと確認周りをポチポチしてもらったらOKです。
gyazo.com

これでSlack側の準備は整いました。

S3の準備。

APPFlowからアクセスされるため、任意のS3バケットを用意してください。AppFlowを作成するリージョンと一致させる必要があります。

AppFlowのセットアップ

前準備は整っているので、ウィザードに従う形で進めれば大体OKです!
作成を開始します。
gyazo.com
フローの基本情報を設定します。デフォルトで暗号化は行われていますので特に設定も必要がないと思います。
gyazo.com
送信元を選びます。コンボボックスからSlackを選択して、接続ボタンを押すことで接続情報の入力画面が表示されます。
準備しておいたSlackの情報をつかって、うめていきます。
gyazo.com
リダイレクトURLの設定をさぼっていると、以下のようなエラーがでます。リージョンの設定が適切かどうかなど、確認してみてください。
gyazo.com
成功すると以下のような許可画面にうつります。確認して進めてください。
gyazo.com
オブジェクト、チャンネルを設定すると以下のような形になります。
gyazo.com
送信先のS3を設定します。
gyazo.com
フローの実行タイミングについては
開始日、終了日、実行のタイミングを指定することもできますが、
今回はデフォルトのオンデマンドですすめます。
gyazo.com
あとはマッピングは任意の項目を。フィルターも必要であれば設定してそのまま進めると完成です。
試しに実行してみると以下のようにAppFlowの名前でフォルダが切られ、なかにJson形式で出力されていました。
gyazo.com
gyazo.com

いい感じですね。送信元のサービスの設定にてこずってしまいましたが、AWS側の設定ほんの1、2分でいけました。素晴らしい。
今のところSlack To Slackとか、S3 To Slack のように、送信先にSlackは選べませんでしたが、送信元は結構な数のサービスがサポートされていました。
気になるサービスがあればつかってみるのもよいのでは。以上です。
Amazon S3
Amazon Redshift
・Amplitude
・Datadog
・Dynatrace
Google Analytics
・Infor Nexus
・Marketo
Salesforce
・ServiceNow
・Singular
・Slack
Snowflake
Trend Micro
・Veeva
・Zendesk