Amazon AppFlowでGoogle Analytics 4のデータをAmazon S3に連携する

データパイプラインサービスであるAmazon AppFlowを使って、ノーコードでGoogle Analytics 4のデータをAmazon S3に連携します
2022.12.22

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

データアナリティクス事業本部インテグレーション部コンサルティングチーム・新納(にいの)です。

先日開催されたAWSのカンファレンスイベント、re:Invent 2022にてAmazon AppFlowで新たに22個のコネクタが追加されたことが発表されました。

このアップデートにより、Google Analytics 4(以下、GA4)のコネクタがAppFlowに仲間入りしました。さっそくGA4のデータをAmazon S3に連携してみました。

GA4→AWSへのデータ連携のこれまで

これまではGA4のデータをAWSに連携するときはGA4のデータをBigQueryに連携し、AWS Glue Connector for Google BigQueryを使ってS3へ連携させる…といった手順がありました。この方法ではGA4からエクスポートされた生データをS3へ連携できます。

事前準備

AppFlow側でコネクタを利用する前にGoogle Cloud側での事前準備が必要となります。

必要なもの

  • 1つ以上のデータ ストリームを持つ Google Analyticsアカウント
  • Google Cloud Platformアカウント
  • Google Cloudプロジェクト

Google CloudプロジェクトでAPIを有効化する

必要となる以下APIをGoogle Cloudプロジェクトで有効化します。

  • Google Analytics API
  • Google Analytics Admin API
  • Google Analytcis Data API

2022年12月22日現在、ドキュメント上ではGoogle Analytics APIのみ記載されていますが、このAPIのみ有効にしているとAppFlowからGA4への接続時に下記のエラーが発生しました。

Error authenticating to connector: Failed to validate Connection while attempting "ValidateCredentials with CustomConnector" with connector failure The request failed because the service Source Google Analytics 4 returned the following error: Details: Google Analytics 4 returned error message - Request failed with Status Code: 403, Error Reason: Forbidden. (Service: null; Status Code: 400; Error Code: Client; Request ID: null; Proxy: null)

OAuth同意画面の設定をする

次に、OAuth同意画面設定をします。ユーザータイプは外部を選択します。今回は公開ステータスをテストで試しているため、テストユーザーに自身のメールアドレスを追加しています。

承認済みドメインにはamazon.comを指定して次に進みます。

「スコープを追加または削除」より、Google Analyticsのreadonly権限を追加します。

OAuthクライアントIDを作成する

認証情報メニューの「認証情報を作成」よりOAuthクライアントIDを指定します。

アプリケーションの種類は「ウェブアプリケーション」を選択し、任意の名前を入力します。

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

承認済みのリダイレクトURIにはhttps://ap-northeast-1.console.aws.amazon.com/appflow/oauthを指定します。今回は東京リージョンでAppFlowを使用しているため、ap-northeast-1を指定しています。別リージョンで使用する際は該当リージョン名に書き換えて設定する必要があります。

設定が完了するとクライアントIDとシークレットが取得できます。この2つを使ってAppFlowからGA4へ接続をします。

AppFlowでフロー作成

AWSマネジメントコンソールからAmazon AppFlowの画面へ遷移し、フローを作成します。

送信元名にはGoogle Analytics 4を指定し、接続情報を設定します。一度設定してしまえば、次回からは既存の接続より選択できます。

新規接続を選ぶと以下のように接続設定画面が表示されます。以下の通り設定します。

  • Access type: offline
  • クライアントID: Google Cloudプロジェクトで設定した認証情報のクライアントID
  • クライアントシークレット: Google Cloudプロジェクトで設定した認証情報のクライアントシークレット
  • 接続名: 任意の接続名称。次回以降は既存の接続から設定した接続名称を選択可能になる。

接続するとGoogleの認証画面が表示されますので許可して次に進みます。

接続が完了すると前の画面に戻ります。APIバージョンは2022年12月現在、v1betaのみ指定可能です。Google Analytics 4オブジェクトには連携したいオブジェクトを指定します。

送信先には今回、Amazon S3を指定しています。

オプションではGlueデータカタログテーブルを作成するかどうか指定できます。ファイル形式はJSON・CSV・Parquetから、タイムスタンプをファイル名に付与するかどうかも選べます。

次にマッピングを設定します。マッピング方法は手動・CSVアップロードが選べますが、今回は手動で設定します。

どのディメンション・指標を連携するか選択します。GA4では連携可能なディメンション・指標の組み合わせが決められているため、有効な組み合わせとなるようにマッピングします。

有効な組み合わせは以下のサイトから確認可能です。

なお、無効な組み合わせを選んでマッピングするとフローの作成自体はできますが、フロー実行時に以下のようなエラーが発生します。

Amazon AppFlow received the following error:
The request failed because the service Source Google Analytics 4 returned the following error: Details: Google Analytics 4 returned error message - Request failed with Status Code: 400, Error Reason: Bad Request, ErrorCode: ClientError.

オプションでパーティションの設定が可能です。

フィルタリングや妥当性の設定も可能ですが、今回はデフォルトのままフロー作成します。作成されたフローを実行すると、Amazon S3に連携されていることが確認できました。

データを一部加工した例として、マッピングしたディメンションと指標が以下のような形で格納されていました。(今回はJSONで出力しています)

{
  "activeUsers": "hoge",
  "city": ""
}
{
  "activeUsers": "huga",
  "city": "Minato City"
}
{
  "activeUsers": "piyo",
  "city": "Chiyoda City"
}
{
  "activeUsers": "hoge2",
  "city": "Osaka"
}
{
  "activeUsers": "huga2",
  "city": "Yokohama"
}

最後に

Amazon AppFlowを使用し、コードの記述なしでGA4のデータをAmazon S3に連携できました。

ブログの中で言及した通り、AWSへGA4のデータを連携するには他にもGA4からBigQueryにエクスポートされたデータをAWS Glue Connector for Google BigQueryを使って取得する方法があります。GA4の生データを確認したいケースではGlueコネクタを使用し、すでに確認したいディメンションと指標が決まっているケースではAppFlowを使用する、といった使い分けができそうです。Glueコネクタでは場合によってはScriptの修正が必要となるケースがありますが、AppFlowはノーコードで簡単に設定できるという強みがあります。担当者のスキルセットや利用シーンに合わせて使い分けを考えていきましょう。