背景・目的
Google Analytics 4 (GA4) のデータを AWS に取り込み、分析したいと考えました。
今回は、Amazon AppFlow(AppFlow)を利用してGA4のデータをAWSに取り込むところまで試します。
実践
Google 側の準備
Google Cloudプロジェクトを用意
- Google Cloud Consoleにサインインします
- 利用しているプロジェクトを選択します。初めての場合は、新規にプロジェクトを作成してください。
API の有効化
- Google Analytics API
- Google Analytics Admin API
- Google Analytics Data API
OAuth 同意画面の設定
-
「Google Auth Platform はまだ構成されていません」と表示されたので「開始」をクリックします
-
下記のアプリ情報を入力し「次へ」をクリックします
- アプリ名:
- ユーザーサポートメール:
-
終了では、「Google API サービス: ユーザーデータに関するポリシーに同意します」を選択し、「続行」をクリックします
-
「作成」をクリックします
OAuth クライアントID(Web アプリ)を作成
-
下記を入力し、「作成」をクリックします
- アプリケーションの種類:Webアプリケーション
- 名前:任意
- 承認済みのリダイレクトURI:
https://{region}.console.aws.amazon.com/appflow/oauth(※{region}の箇所は適宜変更してください ※参考 ) - 承認済みの JavaScript 生成元:なし(※今回はJSからアクセスしないため)
-
最後に、ポップアップが表示されます。AppFlow側の設定利用するので下記の内容をメモしておきます
- クライアントID
- クライアントシークレット
テストユーザの登録
登録しないまま、AppFlowから接続しようとすると下記のような画面が表示されます
アクセスに利用するGoogleアカウントを指定し、「保存」をクリックします
AWSの設定
- AWSにサインインします
宛先(S3バケット)の作成
AppFlowの宛先に指定するS3バケットを作成します
- S3に移動します
- バケットを作成します
AppFlowの接続設定
コネクタの選択
- コネクタで「Google Analytics 4」を選択します
接続の作成
-
「接続を作成」をクリックします
-
ポップアップが表示されるので、下記を入力し「接続する」をクリックします
- 接続名:任意
- クライアントID:Google Cloud Consoleで作成したOAuthクライアントのクライアントID
- クライアントシークレット:Google Cloud Consoleで作成したOAuthクライアントのシークレット
- 暗号化設定をカスタマイズする:※アカウントで所有しているKMSで暗号化する場合はチェックします。チェックしない場合は、AWS所有のKMSで暗号化されます
-
Google のアカウント選択画面が表示されるので、OAuth 同意画面でテストユーザーとして登録した Google アカウントを選択してください
-
「amazon.com が Google アカウントへのアクセスを求めています」と表示されるので「続行」をクリックします
フローの作成
今回は分析までは行わないので、Glueカタログの設定は行いません。次回あらためて設定する予定です
- ナビゲーションペインで「フロー」をクリックします
- 「フローを作成」をクリックします
フローの詳細を設定
- 下記を入力し「次へ」をクリックします
フローを設定
-
下記を指定します
-
送信先の詳細で下記を指定します
データフィールドをマッピング
今回は、取り込むだけに留めるため、式や値を変更などは行いません
マッピングでは、最初は「すべてのフィールドを直接マッピングする」を選択したところ、下記のエラーが表示されました。
ディメンションとメトリクスの上限を超えてしまったようです。一度に大量のフィールドは処理できないようです
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.
- マッピング方法「手動でフィールドをマッピングする」を選択します
- 「Dimension:date」を選択します
- パーティションと集約の設定で下記を指定し、「次へ」をクリックします
フィルターを追加する
実行と確認
AppFlowの実行
- フローの一覧画面から作成したフローを選択します
- 「フローを実行」をクリックします
- しばらくすると、実行が完了します
- フローの「実行履歴」タブをクリックするとステータスや実行日時、転送サイズなどがわかります
データの確認
今回は疎通確認が目的のため、ファイルの中身自体は特に意味のある内容ではありません
-
S3に移動し当該バケットを確認します
-
ダウンロードして内容を確認してみます(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 でクエリする
参考



















