Error de agotamiento del presupuesto de privacidad de depuración

En esta guía, se explica cómo usar la nueva función de depuración del presupuesto de privacidad para errores PRIVACY_BUDGET_EXHAUSTED que ahora está disponible en el servicio de agregación a partir de v2.12.0. Como se documenta, mientras que los informes agregables se envían a una implementación del servicio de agregación a través de trabajos, la infraestructura se basa en el servicio de cuenta de informes agregables ubicado en los coordinadores de TEE (entorno de ejecución confiable) para limitar el uso del presupuesto de privacidad. Recuerda que el presupuesto de privacidad determina la cantidad máxima de veces que se pueden usar estos informes agregables para generar informes de resumen y limitar la obtención de información. Cualquier agregación de un informe más allá de su presupuesto de privacidad asignado fallará con un error PRIVACY_BUDGET_EXHAUSTED.

En esta guía, se explica una función de depuración que, a partir de v2.12.0, genera y almacena un archivo JSON de ayuda de informes relevantes que contribuyeron a cualquier error PRIVACY_BUDGET_EXHAUSTED posterior que hayan experimentado tus trabajos.

Si te interesa la recuperación del presupuesto, consulta nuestra guía pública en GitHub.

Requisitos previos

Si continúas, la guía supone que tienes lo siguiente:

Cómo depurar un trabajo que falló con el error PRIVACY_BUDGET_EXHAUSTED

En este punto, esperamos que hayas ejecutado el extremo getJob con el ID de solicitud de trabajo más reciente y que hayas recibido un error PRIVACY_BUDGET_EXHAUSTED similar a la siguiente respuesta. Desde el servicio de agregación v2.12.0, deberías tener un archivo JSON de depuración de presupuesto de privacidad agotado recientemente generado en tu bucket de almacenamiento público en la nube.

Las rutas se indican mediante return_message y siguen los siguientes formatos:

  • Ruta de acceso al archivo: <output_data_bucket_name>/<output_data_blob_prefix>/
  • Nombre de archivo: 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": ""
    }
  }
}

Pasos para solucionar errores

Busca y abre el resultado privacy_budget_exhausted_debugging_information_<utc timestamp>.json que se te proporcionó en tu bucket público de almacenamiento en la nube. Puedes encontrar esta información en la ruta de acceso <output_data_bucket_name>/<output_data_blob_prefix> proporcionada en return_message. En ese archivo JSON, compara las propiedades filtering_id (el valor predeterminado es 0) y relevant_shared_info con los informes agregables de entrada shared_info. Si encuentras una coincidencia, significa que esos informes superan el presupuesto asignado y generan una falla en el trabajo, por lo que deben filtrarse en trabajos futuros. Ten en cuenta que los informes que coinciden se pueden volver a usar con un ID de filtrado diferente. Una vez que hayas identificado y quitado los informes coincidentes del archivo AVRO de tus informes por lotes, estará todo listo para volver a ejecutar la tarea.

El siguiente es un ejemplo del resultado de 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"
       }
     }
   } ]
 }
}

Próximos pasos

Verifica si alguien más tuvo el mismo problema en el panel de estado de Privacy Sandbox o en el repositorio público de GitHub. Si no encuentras una solución para tu problema con el servicio de agregación, informa un problema en GitHub o envía el formulario de asistencia técnica.