0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GA4データをAmazon AppFlowでAWSに取り込んでみた

Last updated at Posted at 2025-09-14

背景・目的

Google Analytics 4 (GA4) のデータを AWS に取り込み、分析したいと考えました。
今回は、Amazon AppFlow(AppFlow)を利用してGA4のデータをAWSに取り込むところまで試します。

実践

Google 側の準備

Google Cloudプロジェクトを用意

  1. Google Cloud Consoleにサインインします
  2. 利用しているプロジェクトを選択します。初めての場合は、新規にプロジェクトを作成してください。

API の有効化

  1. ナビゲーションペインの「APIとサービス」>「ライブラリ」を選択します

  2. 下記のAPIを検索し、「有効にする」をクリックします

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

OAuth 同意画面の設定

  1. ナビゲーションペインの「APIとサービス」>「OAuth同意画面」を選択します

  2. 「Google Auth Platform はまだ構成されていません」と表示されたので「開始」をクリックします

  3. 下記のアプリ情報を入力し「次へ」をクリックします

    • アプリ名:
    • ユーザーサポートメール:
  4. ユーザータイプとして「External(外部)」を選択し、「次へ」をクリックします

  5. 連絡先情報に「メールアドレス」を入力し、「次へ」をクリックします

  6. 終了では、「Google API サービス: ユーザーデータに関するポリシーに同意します」を選択し、「続行」をクリックします

  7. 「作成」をクリックします

OAuth クライアントID(Web アプリ)を作成

  1. ナビゲーションペインの「APIとサービス」>「認証情報」を選択します

  2. 画面上部の「+認証情報を作成」>「OAuthクライアントID」をクリックします

  3. 下記を入力し、「作成」をクリックします

    • アプリケーションの種類:Webアプリケーション
    • 名前:任意
    • 承認済みのリダイレクトURI:https://{region}.console.aws.amazon.com/appflow/oauth(※{region}の箇所は適宜変更してください ※参考
    • 承認済みの JavaScript 生成元:なし(※今回はJSからアクセスしないため)
  4. 最後に、ポップアップが表示されます。AppFlow側の設定利用するので下記の内容をメモしておきます

    • クライアントID
    • クライアントシークレット

テストユーザの登録

登録しないまま、AppFlowから接続しようとすると下記のような画面が表示されます

  1. ナビゲーションペインの「APIとサービス」>「OAuth同意画面」を選択します

  2. 「対象」をクリックします

  3. テストユーザで「+Add Users」をクリックします

アクセスに利用するGoogleアカウントを指定し、「保存」をクリックします

AWSの設定

  1. AWSにサインインします

宛先(S3バケット)の作成

AppFlowの宛先に指定するS3バケットを作成します

  1. S3に移動します
  2. バケットを作成します

AppFlowの接続設定

  1. AppFlowに移動します
  2. ナビゲーションペインで「接続」をクリックします
    image.png

コネクタの選択

  1. コネクタで「Google Analytics 4」を選択します

接続の作成

  1. 「接続を作成」をクリックします

  2. ポップアップが表示されるので、下記を入力し「接続する」をクリックします

    • 接続名:任意
    • クライアントID:Google Cloud Consoleで作成したOAuthクライアントのクライアントID
    • クライアントシークレット:Google Cloud Consoleで作成したOAuthクライアントのシークレット
    • 暗号化設定をカスタマイズする:※アカウントで所有しているKMSで暗号化する場合はチェックします。チェックしない場合は、AWS所有のKMSで暗号化されます

    image.png

  3. Google のアカウント選択画面が表示されるので、OAuth 同意画面でテストユーザーとして登録した Google アカウントを選択してください

  4. 「このアプリは Google で確認されていません」と表示されます。「続行」をクリックします
    image.png

  5. 「amazon.com が Google アカウントへのアクセスを求めています」と表示されるので「続行」をクリックします

  6. できました
    image.png

フローの作成

今回は分析までは行わないので、Glueカタログの設定は行いません。次回あらためて設定する予定です

  1. ナビゲーションペインで「フロー」をクリックします
  2. 「フローを作成」をクリックします

フローの詳細を設定

  1. 下記を入力し「次へ」をクリックします
    • フロー名:任意
    • フローの説明:任意
    • データ暗号化>暗号化設定をカスタマイズする(高度):※アカウントで所有しているKMSで暗号化する場合はチェックします。チェックしない場合は、AWS所有のKMSで暗号化されます
      image.png

フローを設定

  1. 下記を指定します

    • 送信元名: Google Analytics 4
    • Google Analytics 4接続を選択:作成したAppFlowの接続
    • Google Analytics 4オブジェクト:Core Report (Real-Time Reportも選択できます)
    • Google Analytics 4 サブオブジェクトを選択:GA4のオブジェクト
    • Google Analytics 4 サブオブジェクトを選択:プロパティ
      image.png
  2. 送信先の詳細で下記を指定します

    • バケット名:上記で用意したバケット
    • S3パス:任意(※末尾にフロー名が入るようです)
    • データ形式:JSON(他にCSV、Parquetが選べます)
    • ファイル名の設定:タイムスタンプを追加
      image.png
  3. フロートリガーでは、「オンデマンドで実行」を選択し、「次へ」をクリックします
    image.png

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

今回は、取り込むだけに留めるため、式や値を変更などは行いません

マッピングでは、最初は「すべてのフィールドを直接マッピングする」を選択したところ、下記のエラーが表示されました。
ディメンションとメトリクスの上限を超えてしまったようです。一度に大量のフィールドは処理できないようです

Amazon AppFlow received the following error:
The request failed because the service Source Google Analytics 4 returned the following error: Details: "Requests are limited to 9 dimensions within a nested request. This request is for 374 dimensions.". Status code 400 (Bad Request)., ErrorCode: InvalidArgument.

  1. マッピング方法「手動でフィールドをマッピングする」を選択します
  2. 「Dimension:date」を選択します
  3. パーティションと集約の設定で下記を指定し、「次へ」をクリックします
    • 日次で動かす想定として日時パーティションとしています
    • 日時:毎日
    • 集約の設定:各ファイルを128MB単位で作成する
      image.png

フィルターを追加する

  1. 特段指定せずに「次へ」をクリックします
    image.png

実行と確認

AppFlowの実行

  1. フローの一覧画面から作成したフローを選択します
  2. 「フローを実行」をクリックします
  3. しばらくすると、実行が完了します
  4. フローの「実行履歴」タブをクリックするとステータスや実行日時、転送サイズなどがわかります
    image.png

データの確認

今回は疎通確認が目的のため、ファイルの中身自体は特に意味のある内容ではありません

  1. S3に移動し当該バケットを確認します

  2. 対象のファイルができていました
    image.png

  3. ダウンロードして内容を確認してみます(S3 Selectでは確認ができませんでした)

    % ls -l 2025-09-14T02_42_06.811Z       
    -rw-r--r--@ 1 XXXX  XXXX  600  9 14 11:46 2025-09-14T02_42_06.811Z
    % cat 2025-09-14T02_42_06.811Z
    {"date":"20250814"}
    {"date":"20250815"}
    {"date":"20250816"}
    {"date":"20250817"}
    {"date":"20250818"}
    {"date":"20250819"}
    {"date":"20250820"}
    {"date":"20250821"}
    {"date":"20250822"}
    {"date":"20250823"}
    {"date":"20250824"}
    {"date":"20250825"}
    {"date":"20250826"}
    {"date":"20250827"}
    {"date":"20250828"}
    {"date":"20250829"}
    {"date":"20250830"}
    {"date":"20250831"}
    {"date":"20250901"}
    {"date":"20250902"}
    {"date":"20250903"}
    {"date":"20250904"}
    {"date":"20250905"}
    {"date":"20250906"}
    {"date":"20250907"}
    {"date":"20250908"}
    {"date":"20250909"}
    {"date":"20250910"}
    {"date":"20250911"}
    {"date":"20250912"}
    % 
    

考察

今回の取り組みでは、Google Analytics 4 (GA4) のデータを Amazon AppFlow 経由で S3 に取り込むところまで疎通確認ができました。

今回の取り組みを通じて、以下の点に気づきがありました。

  • AppFlow はノーコードでセットアップできるため、接続までは非常に簡単
  • GA4 API の制約(ディメンションは最大9個まで、メトリクスは最大10個まで)があるため、一度に大量の項目を選択できない点には注意が必要

今後は、下記を試してみようと思います

  • 取り込み対象のディメンション・メトリクスを拡張し、実際に分析に活用できるデータセットを作成する
  • S3 に蓄積したデータを Glue Data Catalog に登録し、Athena でクエリする

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?