במדריך הזה מוסבר איך להשתמש בתכונה החדשה לניפוי באגים של תקציב הפרטיות בשגיאות PRIVACY_BUDGET_EXHAUSTED, שזמינה עכשיו ב-Aggregation Service, החל מגרסה v2.12.0. כפי שמתואר במסמכים, דוחות שאפשר לצבור נשלחים להטמעה של Aggregation Service באמצעות משימות, אבל התשתית מסתמכת על Aggregatable Reporting Account Service שנמצא ברכיבי התיאום של 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 שדומה לתגובה הבאה. בקטגוריה שלכם ב-Cloud Storage, אמור להיות קובץ חדש של ניפוי באגים JSON שנוצר על ידי שירות הצבירה v2.12.0, שבו נעשה שימוש מלא בתקציב הפרטיות.
הנתיבים מצוינים על ידי 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 או לשלוח את טופס התמיכה הטכנית.