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 los errores de PRIVACY_BUDGET_EXHAUSTED que ahora está disponible en el Servicio de agregación, a partir de v2.12.0. Como se documentó, si bien 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 cuentas de informes agregables ubicado en los coordinadores del TEE (entorno de ejecución de confianza) para limitar el uso del presupuesto de privacidad. Como recordatorio, 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 ganancia de información. Cualquier agregación de un informe que supere 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 del v2.12.0, genera y almacena un archivo JSON auxiliar de informes relevantes que contribuyeron a cualquier error de PRIVACY_BUDGET_EXHAUSTED posterior que experimentaron tus trabajos.

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

Requisito previo

Si continúas, la guía supondrá 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 tu solicitud de trabajo más reciente y que hayas recibido un error PRIVACY_BUDGET_EXHAUSTED similar a la siguiente respuesta. En el Servicio de agregación v2.12.0, deberías tener un archivo JSON de depuración del agotamiento del presupuesto de privacidad recién generado ubicado en tu bucket de almacenamiento en la nube pública.

Las rutas de acceso se indican en 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 el error

Ubica y abre el resultado privacy_budget_exhausted_debugging_information_<utc timestamp>.json que se te proporcionó en tu bucket de almacenamiento público en la nube. Se puede encontrar en la ruta de acceso <output_data_bucket_name>/<output_data_blob_prefix> que se proporciona en return_message. Dentro de 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. Encontrar una coincidencia significa que esos informes superan el presupuesto asignado y provocan una falla en el trabajo, por lo que deben filtrarse en trabajos futuros. Ten en cuenta que los informes de coincidencias se pueden reutilizar con un ID de filtrado diferente. Después de identificar y quitar los informes coincidentes de tu archivo AVRO de informes por lotes, podrás volver a ejecutar tu trabajo.

A continuación, se muestra 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

Comprueba 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 ves una solución para tu problema con el Servicio de Agregación, registra un problema en GitHub o envía el formulario de asistencia técnica.