Ce guide explique comment utiliser la nouvelle fonctionnalité de débogage du budget de confidentialité pour les erreurs PRIVACY_BUDGET_EXHAUSTED, désormais disponible dans le service d'agrégation depuis v2.12.0. Comme indiqué dans la documentation, bien que les rapports agrégables soient envoyés dans un déploiement d'Aggregation Service via des jobs, l'infrastructure s'appuie sur le service de compte de rapports agrégables situé dans les coordinateurs TEE (Trusted Execution Environment, environnement d'exécution sécurisé) pour limiter l'utilisation du budget de confidentialité. Pour rappel, le budget de confidentialité détermine le nombre maximal de fois où ces rapports agrégables peuvent être utilisés pour générer des rapports récapitulatifs afin de limiter le gain d'informations. Toute agrégation d'un rapport au-delà de son budget de confidentialité alloué échouera et générera une erreur PRIVACY_BUDGET_EXHAUSTED.
Ce guide vous présente une fonctionnalité de débogage qui, depuis v2.12.0, génère et stocke un fichier JSON d'assistance contenant les rapports pertinents ayant contribué aux erreurs PRIVACY_BUDGET_EXHAUSTED ultérieures rencontrées par vos jobs.
Si vous souhaitez en savoir plus sur la récupération du budget, consultez nos conseils publics sur GitHub.
Prérequis
En continuant, ce guide suppose que vous disposez des éléments suivants :
- Service d'agrégation
v2.12.0(ou version ultérieure) déployé sur le cloud public de votre choix (Google Cloud Platform ou Amazon Web Services).
Déboguer un job ayant échoué avec l'erreur PRIVACY_BUDGET_EXHAUSTED
À ce stade, nous nous attendons à ce que vous ayez exécuté le point de terminaison getJob avec votre dernier ID de demande de tâche et que vous ayez reçu une erreur PRIVACY_BUDGET_EXHAUSTED semblable à la réponse suivante. À partir du service d'agrégation v2.12.0, vous devriez disposer d'un fichier de débogage JSON nouvellement généré pour le budget de confidentialité épuisé, situé dans votre bucket de stockage cloud public.
Les chemins d'accès sont indiqués par return_message et suivent les formats suivants :
- Chemin d'accès au fichier :
<output_data_bucket_name>/<output_data_blob_prefix>/ - Nom du fichier :
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": ""
}
}
}
Procédure de résolution des erreurs
Localisez et ouvrez le résultat privacy_budget_exhausted_debugging_information_<utc timestamp>.json qui vous a été fourni dans votre bucket de stockage cloud public. Vous trouverez ce fichier au chemin d'accès <output_data_bucket_name>/<output_data_blob_prefix> fourni dans return_message.
Dans ce fichier JSON, comparez les propriétés filtering_id (par défaut, la valeur est 0) et relevant_shared_info aux rapports agrégables d'entrée shared_info.
Si une correspondance est trouvée, cela signifie que ces rapports dépassent le budget alloué et entraînent un échec du job. Ils doivent donc être filtrés dans les futurs jobs. Notez que les rapports correspondants peuvent toujours être réutilisés avec un autre ID de filtrage. Une fois que vous avez identifié et supprimé les rapports correspondants de votre fichier AVRO de rapports par lot, vous pouvez relancer votre tâche.
Voici un exemple de résultat 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"
}
}
} ]
}
}
Étapes suivantes
Vérifiez si d'autres utilisateurs ont rencontré le même problème sur le tableau de bord de l'état de Privacy Sandbox ou sur le dépôt GitHub public. Si vous ne trouvez pas de solution à votre problème lié au service d'agrégation, signalez-le sur GitHub ou envoyez le formulaire d'assistance technique.