В этом руководстве объясняется, как использовать новую функцию отладки бюджета конфиденциальности для ошибок PRIVACY_BUDGET_EXHAUSTED , которая теперь доступна в службе агрегации, начиная с v2.12.0 . Как указано в документации, хотя агрегируемые отчеты отправляются в развертывание службы агрегации через задания, инфраструктура полагается на службу учетных записей агрегируемых отчетов, расположенную в координаторах TEE (Trusted Execution Environment), для ограничения использования бюджета конфиденциальности. Напомним, что бюджет конфиденциальности определяет максимальное количество раз, когда эти агрегируемые отчеты могут быть использованы для создания сводных отчетов с целью ограничения получения информации. Любая агрегация отчета сверх выделенного бюджета конфиденциальности завершится ошибкой PRIVACY_BUDGET_EXHAUSTED .
В этом руководстве описана функция отладки, которая, начиная с v2.12.0 , генерирует и сохраняет вспомогательный JSON-файл с соответствующими отчетами, которые способствовали возникновению последующих ошибок PRIVACY_BUDGET_EXHAUSTED в ваших заданиях.
Если вас интересует вопрос возмещения бюджетных расходов , перейдите к нашим публичным рекомендациям на GitHub.
Предварительное условие
Продолжая чтение, вы должны понимать, что у вас есть следующее:
- Сервис агрегации
v2.12.0(или более поздней) развернут в выбранном вами публичном облаке ( Google Cloud Platform или Amazon Web Services ).
Отладка задания, завершившегося с ошибкой PRIVACY_BUDGET_EXHAUSTED.
На данном этапе мы ожидаем, что вы выполнили команду getJob с использованием идентификатора вашего последнего запроса задания и получили в ответ ошибку PRIVACY_BUDGET_EXHAUSTED аналогичную следующей. Начиная с версии Aggregation Service v2.12.0 , у вас должен быть недавно сгенерированный отладочный JSON файл, содержащий информацию об исчерпании бюджета конфиденциальности, расположенный в вашем общедоступном облачном хранилище.
Пути указываются параметром return_message и имеют следующий формат:
- Путь к файлу:
<output_data_bucket_name>/<output_data_blob_prefix>/ - Имя файла:
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": ""
}
}
}
Шаги по устранению ошибки
Найдите и откройте предоставленный вам в вашем общедоступном облачном хранилище файл privacy_budget_exhausted_debugging_information_<utc timestamp>.json . Он находится по пути <output_data_bucket_name>/<output_data_blob_prefix> указанному в return_message . В этом JSON-файле сравните свойства filtering_id (по умолчанию 0) и relevant_shared_info со свойствами входных агрегируемых отчетов shared_info . Совпадение означает, что эти отчеты превышают выделенный бюджет и приводят к сбою задания, поэтому их необходимо отфильтровать в будущих заданиях. Обратите внимание, что совпадающие отчеты можно повторно использовать с другим идентификатором фильтрации. После того, как вы определили и удалили совпадающие отчеты из файла AVRO пакетных отчетов, вы готовы повторно запустить задание.
Ниже приведён пример вывода файла 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"
}
}
} ]
}
}
Следующие шаги
Проверьте, сталкивался ли кто-либо еще с подобной проблемой, на панели мониторинга состояния песочницы конфиденциальности или в общедоступном репозитории GitHub . Если вы не нашли решения своей проблемы со службой агрегации, создайте заявку на GitHub или отправьте форму технической поддержки .