このガイドでは、v2.12.0 以降、集計サービスで利用可能になった PRIVACY_BUDGET_EXHAUSTED エラーの新しいプライバシー バジェット デバッグ機能を使用する方法について説明します。ドキュメントに記載されているように、集計可能なレポートはジョブを通じて集計サービスのデプロイに送信されますが、インフラストラクチャは TEE(Trusted Execution Environment)コーディネーターにある集計可能なレポート アカウント サービスに依存して、プライバシー予算の使用量を制限します。プライバシー バジェットは、情報取得を制限するために、これらの集計可能なレポートを使用して概要レポートを生成できる最大回数を決定します。レポートの割り当てられたプライバシー バジェットを超える集計は、PRIVACY_BUDGET_EXHAUSTED エラーで失敗します。
このガイドでは、v2.12.0 以降、ジョブで発生した PRIVACY_BUDGET_EXHAUSTED エラーの原因となった関連レポートのヘルパー JSON ファイルを生成して保存するデバッグ機能について説明します。
予算の回復に関心がある場合は、GitHub の公開ガイダンスに進んでください。
前提条件
このガイドは、以下のものがあることを前提としています。
- 選択したパブリック クラウド(Google Cloud Platform または Amazon Web Services)にデプロイされた Aggregation Service
v2.12.0(以降)。
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 の問題を報告するか、テクニカル サポート フォームを送信してください。