Errore di debug: budget di privacy esaurito

Questa guida spiega come utilizzare la nuova funzionalità di debug del budget per la privacy per gli errori PRIVACY_BUDGET_EXHAUSTED ora disponibile nel Servizio di aggregazione, a partire dal giorno v2.12.0. Come documentato, sebbene i report aggregabili vengano inviati a un deployment del Servizio di aggregazione tramite job, l'infrastruttura si basa sul Servizio account report aggregabili situato nei coordinatori TEE (Trusted Execution Environment) per limitare l'utilizzo del budget per la privacy. Ti ricordiamo che il budget per la privacy determina il numero massimo di volte in cui questi report aggregabili possono essere utilizzati per generare report di riepilogo al fine di limitare l'aumento delle informazioni. Qualsiasi aggregazione di un report oltre il budget di privacy allocato non andrà a buon fine con un errore PRIVACY_BUDGET_EXHAUSTED.

Questa guida illustra una funzionalità di debug che, a partire dal giorno v2.12.0, genera e memorizza un file JSON di supporto con i report pertinenti che hanno contribuito a eventuali errori PRIVACY_BUDGET_EXHAUSTED successivi riscontrati dai tuoi job.

Se ti interessa il recupero del budget, consulta le nostre linee guida pubbliche su GitHub

Prerequisito

Se continui, la guida presuppone che tu disponga di quanto segue:

  • Servizio di aggregazione v2.12.0 (o versioni successive) di cui è stato eseguito il deployment sul cloud pubblico scelto (Google Cloud o Amazon Web Services).

Debug di un job non riuscito con l'errore PRIVACY_BUDGET_EXHAUSTED

A questo punto, ci aspettiamo che tu abbia eseguito l'endpoint getJob con il tuo ID richiesta di lavoro più recente e che tu abbia ricevuto un errore PRIVACY_BUDGET_EXHAUSTED simile alla seguente risposta. Nel servizio di aggregazione v2.12.0, dovresti avere un file di debug JSON per il budget della privacy esaurito appena generato nel tuo bucket di archiviazione cloud pubblico.

I percorsi sono indicati da return_message e seguono i seguenti formati:

  • Percorso del file: <output_data_bucket_name>/<output_data_blob_prefix>/
  • Nome file: 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": ""
    }
  }
}

Procedura di risoluzione degli errori

Individua e apri l'output privacy_budget_exhausted_debugging_information_<utc timestamp>.json fornito nel tuo bucket di archiviazione cloud pubblico. Lo puoi trovare al percorso <output_data_bucket_name>/<output_data_blob_prefix> fornito in return_message. All'interno del file JSON, confronta le proprietà filtering_id (valore predefinito 0) e relevant_shared_info con i report aggregabili di input shared_info. Se viene trovata una corrispondenza, significa che questi report superano il budget allocato e causano un errore del job e devono essere esclusi nei job futuri. Tieni presente che i report corrispondenti possono comunque essere riutilizzati con un ID filtro diverso. Dopo aver identificato e rimosso i report corrispondenti dal file AVRO dei report batch, puoi eseguire nuovamente il job.

Di seguito è riportato un esempio di output di 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"
       }
     }
   } ]
 }
}

Passaggi successivi

Controlla se qualcun altro ha riscontrato lo stesso problema nella Dashboard dello stato di Privacy Sandbox o nel repository pubblico GitHub. Se non trovi una soluzione al tuo problema relativo al servizio di aggregazione, invia un problema su GitHub o invia il modulo di assistenza tecnica.