Este guia explica como usar o novo recurso de depuração do orçamento de privacidade para erros
PRIVACY_BUDGET_EXHAUSTED, que agora está disponível no Serviço de agregação,
a partir de v2.12.0. Conforme documentado, embora os relatórios agregáveis sejam enviados para uma implantação do serviço de agregação por meio de jobs, a infraestrutura depende do serviço de conta de relatórios agregáveis localizado nos coordenadores do TEE (Trusted Execution Environment, ambiente de execução confiável) para limitar o uso do orçamento de privacidade. Vale lembrar que o orçamento de privacidade determina o número máximo de vezes que esses relatórios agregáveis podem ser usados para gerar relatórios de resumo e limitar o ganho de informações. Qualquer agregação de um relatório além do orçamento de privacidade alocado vai falhar com o erro PRIVACY_BUDGET_EXHAUSTED.
Este guia mostra um recurso de depuração que, desde v2.12.0,
gera e armazena um arquivo JSON auxiliar de relatórios relevantes que contribuíram para
qualquer erro PRIVACY_BUDGET_EXHAUSTED subsequente nos seus jobs.
Se você tiver interesse em recuperação de orçamento, continue com nossa orientação pública no GitHub
Pré-requisito
Ao continuar, o guia pressupõe que você tenha o seguinte:
- Serviço de agregação
v2.12.0(ou mais recente) implantado na nuvem pública escolhida (Google Cloud Platform ou Amazon Web Services).
Depurar um job que falhou com o erro PRIVACY_BUDGET_EXHAUSTED
Neste ponto, esperamos que você tenha executado o endpoint getJob com seu
ID de solicitação de job mais recente e recebido um erro PRIVACY_BUDGET_EXHAUSTED semelhante
à resposta a seguir. No serviço de agregação v2.12.0, você tem um arquivo JSON de depuração de esgotamento do orçamento de privacidade recém-gerado localizado no seu bucket de armazenamento em nuvem pública.
Os caminhos são declarados por "return_message" e seguem os seguintes formatos:
- Caminho do arquivo:
<output_data_bucket_name>/<output_data_blob_prefix>/ - Nome do arquivo:
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": ""
}
}
}
Etapas para resolver o erro
Localize e abra a saída privacy_budget_exhausted_debugging_information_<utc timestamp>.json fornecida no bucket de armazenamento em nuvem pública. Ele pode ser encontrado no caminho <output_data_bucket_name>/<output_data_blob_prefix> fornecido em return_message.
No arquivo JSON, compare as propriedades filtering_id (o padrão é 0) e relevant_shared_info com os relatórios agregáveis de entrada shared_info.
Encontrar uma correspondência significa que esses relatórios excedem o orçamento alocado e causam uma falha no job, precisando ser filtrados em jobs futuros. Os relatórios correspondentes ainda podem ser reutilizados com um ID de filtragem diferente. Depois de identificar e remover os relatórios correspondentes do arquivo AVRO de relatórios em lote, você poderá executar o job novamente.
Confira um exemplo de saída 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óximas etapas
Verifique se mais alguém teve o mesmo problema no Painel de status do Sandbox de privacidade ou no repositório público do GitHub. Se você não encontrar uma solução para seu problema com o Serviço de agregação, registre um problema no GitHub ou envie o formulário de suporte técnico.