이 가이드에서는 v2.12.0부터 집계 서비스에서 사용할 수 있는 PRIVACY_BUDGET_EXHAUSTED 오류에 대한 새로운 개인 정보 보호 예산 디버깅 기능을 사용하는 방법을 설명합니다. 문서에 설명된 대로 집계 가능한 보고서는 작업을 통해 집계 서비스 배포에 제출되지만 인프라는 TEE (신뢰할 수 있는 실행 환경) 코디네이터에 있는 집계 가능한 보고 계정 서비스를 사용하여 개인 정보 보호 예산 사용량을 제한합니다. 참고로 개인 정보 보호 예산은 정보 획득을 제한하기 위해 이러한 집계 가능한 보고서를 사용하여 요약 보고서를 생성할 수 있는 최대 횟수를 결정합니다. 할당된 개인 정보 보호 예산을 초과하는 보고서의 집계는 PRIVACY_BUDGET_EXHAUSTED 오류와 함께 실패합니다.
이 가이드에서는 v2.12.0부터 작업에서 발생하는 후속 PRIVACY_BUDGET_EXHAUSTED 오류에 기여한 관련 보고서의 도우미 JSON 파일을 생성하고 저장하는 디버깅 기능을 안내합니다.
예산 복구에 관심이 있다면 GitHub의 공개 가이드를 계속 확인하세요.
기본 요건
계속 진행하면 다음 항목이 있다고 가정합니다.
- 선택한 공개 클라우드(Google Cloud Platform 또는 Amazon Web Services)에 배포된 집계 서비스
v2.12.0이상
PRIVACY_BUDGET_EXHAUSTED 오류로 실패한 작업 디버깅
이 시점에서 최신 작업 요청 ID로 getJob 엔드포인트를 실행하고 다음 응답과 유사한 PRIVACY_BUDGET_EXHAUSTED 오류를 받았을 것으로 예상됩니다. 집계 서비스 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 출력을 찾아 엽니다. 이는 return_message에 제공된 <output_data_bucket_name>/<output_data_blob_prefix> 경로에서 확인할 수 있습니다.
해당 JSON 파일 내에서 filtering_id (기본값은 0) 및 relevant_shared_info 속성을 입력 집계 가능 보고서 shared_info와 비교합니다.
일치하는 항목이 있으면 해당 보고서가 할당된 예산을 초과하여 작업 실패로 이어지므로 향후 작업에서 필터링해야 합니다. 일치하는 보고서는 다른 필터링 ID와 함께 재사용할 수 있습니다. 일치하는 보고서를 일괄 보고서 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 문제를 신고하거나 기술 지원 양식을 제출하세요.