AppFlowでGoogle AnalyticsからS3への連携を試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先日リリースされたAppFlowで、Google AnalyticsからS3への連携を試してみました。

事前準備

まずは事前準備としてAppFlowがGCPのAPIにアクセスできるように設定する必要があります。

GCPで専用のプロジェクトを作り、そのプロジェクトでAnalytics APIとAnalytics Report APIを有効化します。

APIの有効化が完了したら、OAuth同意画面での設定を行います。 APIタイプは内部を選択します。

Google Analyticsのreadonly権限をスコープに追加します。

承認済みのドメインにはamazon.comを設定します。

OAuth同意画面での設定が完了したら、次はOAuthクライアントIDを作成します。

アプリケーションの種類はウェブアプリケーションを選択します。

制限事項の承認済みのJavaScript生成元には、https://console.aws.amazon.comを設定します。

承認済みのリダイレクトURIにはhttps://ap-northeast-1.console.aws.amazon.com/appflow/oauthを設定します。

※東京リージョン以外のAppFlowを利用する場合は、ap-northeast-1の部分を対象リージョン名に変更する必要があります。

作成が完了すると、次のようにクライアントIDとクライアントシークレットが表示されます。AppFlowでコネクションを作成する際に利用するため、コピーして控えておきます。

これで、GCPでの事前準備は完了です。ここからはAWSのマネジメントコンソールでの操作となります。

フローを作成

AppFlowのフローの作成に取り掛かります。

名前を設定し、説明も必要に応じて設定します。

タグやデータ暗号化も設定できますが、今回は設定せずに次に進みます。

送信元の設定

次は送信元の設定を行います。

Google Analyticsを選択し、接続を新しく作成します。

GCPでの事前準備の際に控えておいた、クライアントIDとクライアントシークレット、自由な接続名を入力します。続行すると、Googleの認証画面が開くので、認証に同意します。

認証が完了すると、オブジェクトやサブオブジェクトが選択できるようになるので、連携したい対象を選択します。

送信先の設定

取得したデータを保存する先を設定します。S3バケットとパスを入力します。

フロートリガーの設定

実行タイミングを設定します。スケジュールによる定期実行も可能ですが、ここではオンデマンドでの実行を選択します。

データフィールドのマッピング

取得したいデータを設定します。フィールド名が検索&選択できるようになっているので、必要なものを選択し、マッピングします。

妥当性確認は設定せずに次に進みます。

フィルタリングの設定

ここでは取得するデータをどうフィルタリングするかを設定できます。今のところ設定可能な項目はDate Rangeのみです。

フィルタリング情報を設定し、次に進めると確認画面になります。確認画面で内容が正しいか確認したのち、フローの作成を実行します。

フローの実行

フローの作成が完了すると、フローの詳細画面に自動的に移動します。 右上のフローを実行からフローを実行します。 実行時間は処理するデータ量に依存します。

フローが完了したら、S3にデータが保存されています。

中身は次のようなJSON形式になっています。

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:pagePath",
          "ga:date"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:visits",
              "type": "INTEGER"
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "/",
              "20200422"
            ],
            "metrics": [
              {
                "values": [
                  "123456789"
                ]
              }
            ]
          },
          ...
        ],
        "totals": [
          {
            "values": [
              "123456789"
            ]
          }
        ],
        "rowCount": 123456789,
        "minimums": [
          {
            "values": [
              "123456789"
            ]
          }
        ],
        "maximums": [
          {
            "values": [
              "123456789"
            ]
          }
        ]
      }
    }
  ]
}

さいごに

AppFlowを用いた、Google AnalyticsからS3へのデータ連携を試してみました。画面をポチポチするだけで簡単にできました。Google AnalyticsのデータをAWSで分析やシステム連携等に利用する際には非常に便利そうです。