プライバシー バジェット不足エラーをデバッグする

このガイドでは、v2.12.0 以降、Aggregation Service で利用可能になった PRIVACY_BUDGET_EXHAUSTED エラーの新しいプライバシー バジェット デバッグ機能を使用する方法について説明します。ドキュメントに記載されているように、集計可能なレポートはジョブを介して集計サービスのデプロイに送信されますが、このインフラストラクチャは TEE(信頼実行環境)コーディネータにある集計可能なレポート アカウント サービスを使用して、プライバシー バジェットの使用量を制限します。なお、プライバシー バジェットは、集計可能なレポートを使用して概要レポートを生成できる最大回数を決定し、情報の取得を制限します。割り当てられたプライバシー バジェットを超えるレポートの集計は、PRIVACY_BUDGET_EXHAUSTED エラーで失敗します。

このガイドでは、v2.12.0 以降のジョブで発生した PRIVACY_BUDGET_EXHAUSTED エラーの原因となった関連レポートのヘルパー JSON ファイルを生成して保存するデバッグ機能について説明します。

予算の回復に関心をお持ちの場合は、GitHub の公開ガイダンスをご覧ください。

前提条件

このガイドは、以下のものがあることを前提としています。

PRIVACY_BUDGET_EXHAUSTED エラーで失敗したジョブをデバッグする

この時点で、最新のジョブリクエスト ID を使用して getJob エンドポイントを実行し、次のようなレスポンスに似た PRIVACY_BUDGET_EXHAUSTED エラーが返されたと想定されます。Aggregation Service v2.12.0 から、一般公開クラウド ストレージ バケットに、新しく生成されたプライバシー バジェット不足のデバッグ JSON ファイルが配置されているはずです。

パスは return_message で指定され、次の形式になります。

  • ファイルパス: <output_data_bucket_name>/<output_data_blob_prefix>/
  • ファイル名: privacy_budget_exhausted_<request_received_at_timestamp>.json
{
  "job_status": "FINISHED",
  "request_received_at": <utc timestamp>,
  "request_updated_at": <utc timestamp>,
  "job_request_id": <customer assigned job id>,
  
  "request_processing_started_at": <utc timestamp>,
  "result_info": {
    "return_code": "PRIVACY_BUDGET_EXHAUSTED",
    "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException: Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear in more than one aggregation job. Information related to reports that do not have budget can be found in the following file:
    File path: ags-privacy-budget-codelab/output-bucket/output-domain Filename: privacy budget exhausted debugging information <utc timestamp> \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
    "error_summary": {
      "error_counts": "",
      "error_messages": ""
    }
  }
}

エラーの解決手順

公開クラウド ストレージ バケットに提供された privacy_budget_exhausted_debugging_information_<utc timestamp>.json 出力を見つけて開きます。これは、return_message で指定されたパス <output_data_bucket_name>/<output_data_blob_prefix> にあります。その JSON ファイル内で、filtering_id プロパティ(デフォルトは 0)と relevant_shared_info プロパティを、入力された集計可能なレポート shared_info と比較します。一致が見つかった場合、それらのレポートは割り当てられた予算を超え、ジョブの失敗につながるため、今後のジョブで除外する必要があります。一致するレポートは、別のフィルタ ID で再利用できます。一括レポートの AVRO ファイルから一致するレポートを特定して削除したら、ジョブを再実行できます。

privacy_budget_exhausted_debugging_information_<utc timestamp>.json の出力の例を次に示します。

{
 "privacy_budget_exhausted_info" : {
   "aggregatable_input_budget_consumption_info" : [ {
     "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738814400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   }, {
       "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738796400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   } ]
 }
}

次のステップ

プライバシー サンドボックスのステータス ダッシュボードまたは公開 GitHub リポジトリで、他のユーザーにも同じ問題が発生していないか確認します。集計サービスの問題の解決策が見つからない場合は、GitHub の問題を報告するか、技術サポート フォームを送信してください。