「Amazon AppFlow」を利用して、Google AnalyticsのデータをS3に保存してみた

AWSでSaaSアプリケーションのデータをAWS内に取り込むサービスが発表されました。

私が注目したのは、Google AnalyticsのデータをS3に簡単に取り込めるようになったことです。今までは、Google AnalyticsのデータをS3に落としてこようとすると、Google AnalyticsのAPIを利用するか、360を契約してBigQueryで引っ張ってくるしかありませんでした。

私の会社はGCPが使えないので、今まではAPIを利用するしかありませんでした。そこで登場したのがAmazon AppFlowです。早速設定してみました。

## 公式での使い方をチェック
[Requirements for Amazon AppFlow - Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/requirements.html#google-analytics)から翻訳して引用します。
>Google API Console at https://console.developers.google.com にログインして、下記の手順を行う
>
>Analytics APIをアクティベイトする
>
>新しいアプリをAppFlowとして作成する。ユーザーの種類は"内部"にセット。スコープに"read only access"を追加。承認済みドメインに"amazon.com"を追加
>
>OAuth 2.0 クライアント IDを作成する。アプリケーションの種類は"ウェブ アプリケーション"。承認済みの JavaScript 生成元に"https\://console.aws.amazon.com"をセット。承認済みのリダイレクト URIに"https\://ap-northeast-1.console.aws.amazon.com/appflow/oauth"をセット
>
>Amazon AppFlowにクライアントIDとクライアントシークレットをセット。Googleのログインページにリダイレクトされる。okを押すと、Amazon AppFlow permissionsに、Google Analyticsのアカウントへのアクセスが与えられる。

簡単そうですね、それでは実際に手を動かしてやってみます。


## GCPの設定
Amazon AppFlowというプロジェクトを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/2fbae0ce-77ea-3d18-f58f-42763c0f5608.png)

Google Analytics APIとGoogle Analytics Reporting APIを有効化します。説明ではAnalytics APIだけですが、Analytics Reporting APIも有効化しないとAWS側でエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/8c3d55d9-8f6b-fd05-2869-ffd0113e1410.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/ae0a4db2-4a2b-fff8-577e-a34299023ef6.png)

OAuth同意画面でユーザーの種類を"外部"にします。(注)公式では"内部"となっていますが、"内部は"G suiteユーザーしか選択できません。私は"外部"でAppFlowが動作しましたが、動作しない方もいる可能性もあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/f62b3b86-a541-f541-1114-fafd36407687.png)


また、OAuth同意画面でスコープと承認済みドメインをセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/35e7fd6c-5d18-2c4b-fbf0-6dca0935bc60.png)

スコープの選択画面で、Google Analyticsと、 Google Reporting API、2つ出てきますが、どちらのreadonlyを選んでもスコープは同じなので、問題ないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/fe4c181a-ec2d-fdaf-71c4-8f35360a830a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/bb4751c2-6778-9eda-631c-d18209bfdbdd.png)

認証情報で、承認済みのJavaScript生成元、承認済みのリダイレクトURIに値をセットします。承認済みのリダイレクトURIは、東京リージョンであれば"https/://ap-northeast-1.console.aws.amazon.com/appflow/oauth"でokです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/dd2a8177-202f-81ce-1f69-ca8c0fbe23a2.png)

クライアントID、クライアントシークレットをメモします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/f821dc30-5001-ca9f-2832-f1ca4a6b7e0a.png)


## AppFlowの設定
AppFlow側の設定をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/4d81df0a-152b-7849-df6a-2b476d82b707.png)

GCPで作成したクライアントID、クライアントシークレットをセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/c8cd8234-642a-a250-cf7c-a91458033c3f.png)

このような形になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/391bc0cf-8b7d-600b-1a34-be9cdb14ca28.png)


[Dimensions & Metrics Explorer](https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/?)で欲しいディメンションとメトリックスを選択していきます。今回は日付とPVを取得することにします。

Google Analyticsはスコープの概念があり、これを考慮しないと誤った値を取得してきてしまいます。AppFlowには、全てのディメンション、メトリックスをマッピングという機能がありましたが、値はおかしくなる気がするので注意が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/e9343d2b-e478-1c96-73ef-227f151eb4a5.png)

フィルタで取得する範囲を絞ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/056aa57f-6d32-3577-6975-a0d28c26eaf6.png)

正常にフローが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/c9e9ea68-bed4-ce55-b316-7ef308d65b96.png)

## 実行
フローを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/be596837-9564-4b54-30c0-0e802b4f4f1a.png)

## 結果
S3にJSONの形で保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228586/69b8cbfd-cdae-1066-559d-8af2bb90a3dd.png)

## まとめ
AppFlowを利用して簡単にS3に引っ張ってくることができました。Goole Analyticsの他にもSalesforce、Marketoと面白そうなソースを取得してくることができます。これからも増えてくるのでしょうか。

AWSにSaaSのコネクターが増えてくれば、AWSだけで何とかなっていきそうですね。


## 参考リンク
- [公式Amazon AppFlow](https://aws.amazon.com/jp/appflow/?nc1=h_ls)
- [SaaSアプリケーションとAWSサービスをデータフローで統合するAmazon AppFlow](https://jp.techcrunch.com/2020/04/23/2020-04-22-aws-launches-amazon-appflow-its-new-saas-integration-service/)