Z tego przewodnika dowiesz się, jak korzystać z nowej funkcji debugowania budżetu prywatności w przypadku błędów PRIVACY_BUDGET_EXHAUSTED, która jest teraz dostępna w usłudze agregacji od v2.12.0. Zgodnie z dokumentacją raporty podlegające agregacji są przesyłane do wdrożenia usługi do agregacji za pomocą zadań, ale infrastruktura opiera się na usłudze konta raportowania podlegającego agregacji znajdującej się w koordynatorach TEE (Trusted Execution Environment), aby ograniczyć wykorzystanie budżetu prywatności. Przypominamy, że budżet prywatności określa maksymalną liczbę razy, kiedy te raporty podlegające agregacji mogą być używane do generowania raportów podsumowujących, aby ograniczyć pozyskiwanie informacji. Każda agregacja raportu wykraczająca poza przydzielony budżet na potrzeby prywatności zakończy się niepowodzeniem i wyświetli błąd PRIVACY_BUDGET_EXHAUSTED.
Ten przewodnik zawiera informacje o funkcji debugowania, która od v2.12.0 generuje i przechowuje pomocniczy plik JSON z odpowiednimi raportami, które przyczyniły się do wystąpienia kolejnych błędów PRIVACY_BUDGET_EXHAUSTED w Twoich zadaniach.
Jeśli interesuje Cię odzyskiwanie budżetu, przejdź do naszych publicznych wskazówek w GitHub.
Wymagania wstępne
W tym przewodniku przyjęto założenie, że masz:
- Usługa agregacji
v2.12.0(lub nowsza) wdrożona w wybranej chmurze publicznej (Google Cloud Platform lub Amazon Web Services).
Rozwiązywanie problemów z zadaniami, które zakończyły się niepowodzeniem z powodu błędu PRIVACY_BUDGET_EXHAUSTED
W tym momencie oczekujemy, że wykonasz punkt końcowy getJob z najnowszym identyfikatorem żądania zadania i otrzymasz błąd PRIVACY_BUDGET_EXHAUSTED podobny do poniższej odpowiedzi. W usłudze agregacji v2.12.0 powinien znajdować się nowo wygenerowany plik debugowania wyczerpania budżetu prywatności JSON w zasobniku publicznej usługi przechowywania danych w chmurze.
Ścieżki są podawane przez return_message i mają następujące formaty:
- Ścieżka pliku:
<output_data_bucket_name>/<output_data_blob_prefix>/ - Nazwa pliku:
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": ""
}
}
}
Rozwiązanie problemu
Znajdź i otwórz plik wyjściowy privacy_budget_exhausted_debugging_information_<utc timestamp>.json w zasobniku publicznej usługi Cloud Storage. Można go znaleźć w ścieżce <output_data_bucket_name>/<output_data_blob_prefix>podanej w return_message.
W tym pliku JSON porównaj właściwości filtering_id (domyślnie 0) i relevant_shared_info z wejściowymi raportami z możliwością agregacji shared_info.
Znalezienie dopasowania oznacza, że te raporty przekraczają przydzielony budżet i prowadzą do niepowodzenia zadania, dlatego w przyszłych zadaniach należy je odfiltrować. Pamiętaj, że raporty dotyczące dopasowywania
można ponownie wykorzystać z innym identyfikatorem filtrowania. Po zidentyfikowaniu i usunięciu z plików raportów zbiorczych AVRO pasujących raportów możesz ponownie uruchomić zadanie.
Oto przykład danych wyjściowych 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"
}
}
} ]
}
}
Następne kroki
Sprawdź, czy ktoś inny napotkał ten sam problem na panelu stanu Privacy Sandbox lub w publicznym repozytorium GitHub. Jeśli nie widzisz rozwiązania problemu z usługą agregacji, zgłoś problem w GitHubie lub prześlij formularz pomocy technicznej.