1. ज़रूरी शर्तें
इस कोडलैब को पूरा करने के लिए, कुछ ज़रूरी शर्तें पूरी करनी होंगी. हर ज़रूरी शर्त को इस हिसाब से मार्क किया जाता है कि वह "लोकल टेस्टिंग" या "एग्रीगेशन सेवा" के लिए ज़रूरी है या नहीं.
1.1. लोकल टेस्टिंग टूल डाउनलोड करना (लोकल टेस्टिंग)
लोकल टेस्टिंग के लिए, लोकल टेस्टिंग टूल डाउनलोड करना होगा. यह टूल, एन्क्रिप्ट (सुरक्षित) नहीं की गई डीबग रिपोर्ट से खास जानकारी वाली रिपोर्ट जनरेट करेगा.
लोकल टेस्टिंग टूल, GitHub में Lambda JAR संग्रह में डाउनलोड करने के लिए उपलब्ध है. इसका नाम LocalTestingTool_{version}.jar
होना चाहिए.
1.2. पक्का करें कि JAVA JRE इंस्टॉल हो (लोकल टेस्टिंग और एग्रीगेशन सेवा)
"Terminal" खोलें और java --version
का इस्तेमाल करके देखें कि आपकी मशीन में Java या openJDK इंस्टॉल है या नहीं.
अगर यह इंस्टॉल नहीं है, तो Java साइट या openJDK साइट से डाउनलोड और इंस्टॉल किया जा सकता है.
1.3. एग्रीगेट की जा सकने वाली रिपोर्ट कन्वर्टर (लोकल टेस्टिंग और एग्रीगेशन सेवा) डाउनलोड करना
Privacy Sandbox के डेमो GitHub रिपॉज़िटरी से, एग्रीगेट की जा सकने वाली रिपोर्ट कन्वर्टर की कॉपी डाउनलोड की जा सकती है.
1.4. विज्ञापन देखने वाले की निजता बनाए रखने से जुड़े एपीआई (लोकल टेस्टिंग और एग्रीगेशन सेवा) चालू करना
अपने ब्राउज़र में, chrome://settings/adPrivacy
पर जाएं और विज्ञापन निजता एपीआई को चालू करें.
पक्का करें कि तीसरे पक्ष की कुकी चालू हों.
अपने ब्राउज़र में, chrome://settings/cookies
पर जाएं और "गुप्त मोड में, तीसरे पक्ष की कुकी ब्लॉक करें" को चुनें.
1.5. वेब और Android पर रजिस्टर करना (एग्रीगेशन सेवा)
प्रोडक्शन एनवायरमेंट में Privacy Sandbox APIs का इस्तेमाल करने के लिए, पक्का करें कि आपने Chrome और Android, दोनों के लिए रजिस्ट्रेशन और पुष्टि की प्रक्रिया पूरी कर ली हो.
लोकल टेस्टिंग के लिए, Chrome फ़्लैग और सीएलआई स्विच का इस्तेमाल करके रजिस्टर करने की सुविधा बंद की जा सकती है.
हमारे डेमो के लिए Chrome फ़्लैग का इस्तेमाल करने के लिए, chrome://flags/#privacy-sandbox-enrollment-overrides
पर जाएं और अपनी साइट के साथ बदलाव को अपडेट करें. अगर हमारी डेमो साइट का इस्तेमाल किया जा रहा है, तो किसी अपडेट की ज़रूरत नहीं है.
1.6. एग्रीगेशन सेवा को शामिल करना (एग्रीगेशन सेवा)
Aggregation Service का इस्तेमाल करने के लिए, कोऑर्डिनेटर को इस सेवा में शामिल करना ज़रूरी है. अपनी रिपोर्टिंग साइट का पता, AWS खाता आईडी, और अन्य जानकारी देकर, एग्रीगेशन सेवा के लिए ऑनबोर्डिंग फ़ॉर्म भरें.
1.7. क्लाउड की सेवा देने वाली कंपनी (एग्रीगेशन सेवा)
एग्रीगेशन सेवा के लिए, ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट का इस्तेमाल करना ज़रूरी है. यह एनवायरमेंट, क्लाउड एनवायरमेंट का इस्तेमाल करता है. एग्रीगेशन सेवा, Amazon Web Services (AWS) और Google Cloud (GCP) पर काम करती है. इस कोडलैब में सिर्फ़ AWS इंटिग्रेशन के बारे में बताया गया है.
AWS, Nitro Enclaves नाम का ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट उपलब्ध कराता है. पक्का करें कि आपके पास AWS खाता हो. साथ ही, AWS CLI इनवायरनमेंट सेट अप करने के लिए, AWS CLI इंस्टॉल करने और अपडेट करने के निर्देशों का पालन करें.
अगर आपका AWS CLI नया है, तो सीएलआई कॉन्फ़िगरेशन के निर्देशों का इस्तेमाल करके, AWS CLI को कॉन्फ़िगर किया जा सकता है.
1.7.1. AWS S3 बकेट बनाना
Terraform स्टेटस को सेव करने के लिए, AWS S3 बकेट बनाएं. साथ ही, अपनी रिपोर्ट और खास जानकारी वाली रिपोर्ट सेव करने के लिए, एक और S3 बकेट बनाएं. दिए गए सीएलआई कमांड का इस्तेमाल किया जा सकता है. <>
में मौजूद फ़ील्ड को सही वैरिएबल से बदलें.
aws s3api create-bucket --bucket <tf_bucket_name> --region us-east-1
aws s3api create-bucket --bucket <report_bucket_name> --region us-east-1
1.7.2. उपयोगकर्ता ऐक्सेस कुंजी बनाना
AWS गाइड का इस्तेमाल करके, उपयोगकर्ता ऐक्सेस पासकोड बनाएं. इसका इस्तेमाल, AWS पर बनाए गए createJob
और getJob
एपीआई एंडपॉइंट को कॉल करने के लिए किया जाएगा.
1.7.3. AWS उपयोगकर्ता और ग्रुप की अनुमतियां
AWS पर एग्रीगेशन सेवा को डिप्लॉय करने के लिए, आपको सेवा को डिप्लॉय करने के लिए इस्तेमाल किए गए उपयोगकर्ता को कुछ अनुमतियां देनी होंगी. इस कोडलैब के लिए, पक्का करें कि उपयोगकर्ता के पास एडमिन ऐक्सेस हो, ताकि डिप्लॉयमेंट में सभी अनुमतियां मिल सकें.
1.8. Terraform (एग्रीगेशन सेवा)
इस कोडलैब में, Aggregation Service को डिप्लॉय करने के लिए Terraform का इस्तेमाल किया गया है. पक्का करें कि आपके स्थानीय एनवायरमेंट में Terraform बाइनरी इंस्टॉल हो.
अपने लोकल एनवायरमेंट में Terraform बाइनरी डाउनलोड करें.
Terraform बाइनरी डाउनलोड होने के बाद, फ़ाइल को निकालें और Terraform बाइनरी को /usr/local/bin
में ले जाएं.
cp <directory>/terraform /usr/local/bin
पक्का करें कि Terraform, क्लासपाथ पर उपलब्ध हो.
terraform -v
1.9. Postman (एग्रीगेशन सेवा AWS के लिए)
इस कोडलैब के लिए, अनुरोध मैनेज करने के लिए Postman का इस्तेमाल करें.
फ़ाइल फ़ोल्डर बनाने के लिए, सबसे ऊपर मौजूद नेविगेशन आइटम "फ़ाइल फ़ोल्डर" पर जाएं और "फ़ाइल फ़ोल्डर बनाएं" को चुनें.
"खाली फ़ाइल फ़ोल्डर" चुनें. इसके बाद, 'आगे बढ़ें' पर क्लिक करें और इसे "निजता सैंडबॉक्स" नाम दें. "निजी" चुनें और "बनाएं" पर क्लिक करें.
पहले से कॉन्फ़िगर किए गए वर्कस्पेस की JSON कॉन्फ़िगरेशन और ग्लोबल एनवायरमेंट फ़ाइलें डाउनलोड करें.
"इंपोर्ट करें" बटन का इस्तेमाल करके, JSON फ़ाइलों को "मेरा Workspace" में इंपोर्ट करें.
इससे आपके लिए createJob
और getJob
एचटीटीपी अनुरोधों के साथ-साथ प्राइवसी सैंडबॉक्स कलेक्शन बन जाएगा.
"एनवायरमेंट की झलक" की मदद से, AWS "ऐक्सेस कुंजी" और "सीक्रेट कुंजी" अपडेट करें.
"बदलाव करें" पर क्लिक करें और "access_key" और "secret_key", दोनों की "मौजूदा वैल्यू" अपडेट करें. ध्यान दें कि frontend_api_id
की जानकारी, इस दस्तावेज़ के सेक्शन 3.1.4 में दी गई है. हमारा सुझाव है कि आप us-east-1 क्षेत्र का इस्तेमाल करें. हालांकि, अगर आपको किसी दूसरे क्षेत्र में डिप्लॉय करना है, तो पक्का करें कि आपने रिलीज़ किए गए एएमआई को अपने खाते में कॉपी कर लिया हो या दी गई स्क्रिप्ट का इस्तेमाल करके, खुद से बनाए गए एएमआई का इस्तेमाल किया हो.
2. लोकल टेस्टिंग कोडलैब
एग्रीगेशन करने और एन्क्रिप्ट (सुरक्षित) नहीं की गई डीबग रिपोर्ट का इस्तेमाल करके खास जानकारी वाली रिपोर्ट जनरेट करने के लिए, अपनी मशीन पर लोकल टेस्टिंग टूल का इस्तेमाल किया जा सकता है.
कोडलैब में शामिल होने का तरीका
दूसरा चरण. रिपोर्ट ट्रिगर करें: रिपोर्ट इकट्ठा करने के लिए, निजी एग्रीगेशन रिपोर्टिंग को ट्रिगर करें.
दूसरा चरण. डीबग करने के लिए एग्रीगेट की जा सकने वाली रिपोर्ट बनाएं: इकट्ठा की गई JSON रिपोर्ट को AVRO फ़ॉर्मैट वाली रिपोर्ट में बदलें.
यह चरण उसी तरह का होगा जब विज्ञापन टेक्नोलॉजी एपीआई रिपोर्टिंग एंडपॉइंट से रिपोर्ट इकट्ठा करती हैं और JSON रिपोर्ट को AVRO फ़ॉर्मैट की रिपोर्ट में बदलती हैं.
दूसरा चरण. डीबग रिपोर्ट से बकेट कुंजी को पार्स करना: बकेट कुंजियों को विज्ञापन टेक्नोलॉजी विशेषज्ञ डिज़ाइन करते हैं. इस कोडलैब में, बकेट पहले से तय होती हैं. इसलिए, बकेट की कुंजियों को दिए गए तरीके से वापस पाएं.
दूसरा चरण. आउटपुट डोमेन AVRO फ़ाइल बनाएं: बकेट कुंजियां वापस पाने के बाद, आउटपुट डोमेन AVRO फ़ाइल बनाएं.
दूसरा चरण. लोकल टेस्टिंग टूल का इस्तेमाल करके समरी रिपोर्ट बनाना: लोकल एनवायरमेंट में समरी रिपोर्ट बनाने के लिए, लोकल टेस्टिंग टूल का इस्तेमाल करें.
दूसरा चरण. खास जानकारी वाली रिपोर्ट की समीक्षा करना: लोकल टेस्टिंग टूल से जनरेट की गई खास जानकारी वाली रिपोर्ट की समीक्षा करें.
2.1. ट्रिगर रिपोर्ट
Privacy Sandbox के डेमो वाली साइट पर जाएं. इससे निजी एग्रीगेशन रिपोर्ट ट्रिगर होती है. रिपोर्ट chrome://private-aggregation-internals
पर देखी जा सकती है.
अगर आपकी रिपोर्ट "मंज़ूरी बाकी है" स्टेटस में है, तो रिपोर्ट चुनें और "चुनी गई रिपोर्ट भेजें" पर क्लिक करें.
2.2. एग्रीगेट की जा सकने वाली डीबग रिपोर्ट बनाना
chrome://private-aggregation-internals
में, [reporting-origin]/.well-known/private-aggregation/report-shared-storage
एंडपॉइंट में मिला "रिपोर्ट बॉडी" कॉपी करें.
पक्का करें कि "रिपोर्ट बॉडी" में, aggregation_coordinator_origin
में https://publickeyservice.msmt.aws.privacysandboxservices.com
हो. इसका मतलब है कि रिपोर्ट, AWS की एग्रीगेट की जा सकने वाली रिपोर्ट है.
JSON "रिपोर्ट बॉडी" को JSON फ़ाइल में डालें. इस उदाहरण में, vim का इस्तेमाल किया जा सकता है. हालांकि, आपके पास अपनी पसंद का कोई भी टेक्स्ट एडिटर इस्तेमाल करने का विकल्प है.
vim report.json
रिपोर्ट को report.json
में चिपकाएं और अपनी फ़ाइल सेव करें.
इसके बाद, अपने रिपोर्ट फ़ोल्डर पर जाएं और aggregatable_report_converter.jar
का इस्तेमाल करके, डीबग की जा सकने वाली रिपोर्ट बनाएं. इससे आपकी मौजूदा डायरेक्ट्री में, report.avro
नाम की एक रिपोर्ट बन जाएगी. इसमें डेटा इकट्ठा किया जा सकता है.
java -jar aggregatable_report_converter.jar \
--request_type convertToAvro \
--input_file report.json \
--debug
2.3. डीबग रिपोर्ट से बकेट कुंजी को पार्स करना
एग्रीगेशन सेवा के लिए, एक साथ कई फ़ाइलें अपलोड करने की सुविधा का इस्तेमाल करने पर, दो फ़ाइलों की ज़रूरत होती है. अलग-अलग डेटा को मिलाकर तैयार की गई रिपोर्ट और आउटपुट डोमेन फ़ाइल. आउटपुट डोमेन फ़ाइल में वे कुंजियां होती हैं जिन्हें आपको एग्रीगेट की जा सकने वाली रिपोर्ट से वापस पाना है. output_domain.avro
फ़ाइल बनाने के लिए, आपको बकेट की ऐसी कुंजियां चाहिए जिन्हें रिपोर्ट से वापस पाया जा सके.
बकेट पासकोड, एपीआई को कॉल करने वाले व्यक्ति या कंपनी डिज़ाइन करती है. डेमो में, पहले से तैयार किए गए बकेट पासकोड के उदाहरण शामिल होते हैं. डेमो में निजी एग्रीगेशन के लिए डीबग मोड चालू है. इसलिए, बकेट पासकोड वापस पाने के लिए, "रिपोर्ट बॉडी" से डीबग क्लियरटेक्स्ट पेलोड को पार्स किया जा सकता है. हालांकि, इस मामले में, साइट प्राइवसी सैंडबॉक्स डेमो, बकेट पासकोड बनाता है. इस साइट के लिए निजी एग्रीगेशन, डीबग मोड में है. इसलिए, बकेट कुंजी पाने के लिए, "रिपोर्ट बॉडी" से debug_cleartext_payload
का इस्तेमाल किया जा सकता है.
रिपोर्ट के मुख्य हिस्से से debug_cleartext_payload
को कॉपी करें.
निजी एग्रीगेशन के लिए, डीबग पेलोड डिकोडर टूल खोलें. इसके बाद, "इनपुट" बॉक्स में अपना debug_cleartext_payload
चिपकाएं और "डिकोड करें" पर क्लिक करें.
यह पेज, बकेट की कुंजी की दशमलव वैल्यू दिखाता है. यहां बकेट की एक सैंपल कुंजी दी गई है.
2.4. आउटपुट डोमेन AVRO बनाना
अब हमारे पास बकेट की कुंजी है, इसलिए बकेट की कुंजी की दशमलव वैल्यू कॉपी करें. बकेट पासकोड का इस्तेमाल करके, output_domain.avro
बनाएं. पक्का करें कि आपने
को, वापस लाई गई बकेट कुंजी से बदल दिया हो.
java -jar aggregatable_report_converter.jar \
--request_type createDomainAvro \
--bucket_key <bucket key>
स्क्रिप्ट, आपके मौजूदा फ़ोल्डर में output_domain.avro
फ़ाइल बनाती है.
2.5. लोकल टेस्टिंग टूल का इस्तेमाल करके खास जानकारी वाली रिपोर्ट बनाना
हम समरी रिपोर्ट बनाने के लिए, सेक्शन 1.1 में डाउनलोड किए गए LocalTestingTool_{version}.jar
का इस्तेमाल करेंगे. यह कमांड इस्तेमाल करें. आपको LocalTestingTool_{version}.jar
को LocalTestingTool के लिए डाउनलोड किए गए वर्शन से बदलना चाहिए.
अपने लोकल डेवलपमेंट एनवायरमेंट में खास जानकारी वाली रिपोर्ट जनरेट करने के लिए, यह कमांड चलाएं:
java -jar LocalTestingTool_{version}.jar \
--input_data_avro_file report.avro \
--domain_avro_file output_domain.avro \
--output_directory .
निर्देश चलाने के बाद, आपको इस इमेज जैसा कुछ दिखेगा. यह प्रोसेस पूरी होने के बाद, एक रिपोर्ट output.avro
बनाई जाती है.
2.6. खास जानकारी वाली रिपोर्ट की समीक्षा करना
खास जानकारी वाली रिपोर्ट, AVRO फ़ॉर्मैट में बनाई जाती है. इसे पढ़ने के लिए, आपको इसे AVRO से JSON फ़ॉर्मैट में बदलना होगा. आम तौर पर, विज्ञापन टेक्नोलॉजी को AVRO रिपोर्ट को फिर से JSON में बदलने के लिए कोड करना चाहिए.
अपने Codelab के लिए, हम AVRO रिपोर्ट को JSON में बदलने के लिए, दिए गए aggregatable_report_converter.jar
टूल का इस्तेमाल करेंगे.
java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro
इससे, नीचे दी गई इमेज जैसी रिपोर्ट मिलती है. साथ ही, उसी डायरेक्ट्री में बनाई गई रिपोर्ट output.json
भी शामिल है.
खास जानकारी वाली रिपोर्ट की समीक्षा करने के लिए, JSON फ़ाइल को अपनी पसंद के एडिटर में खोलें.
3. Aggregation Service का डिप्लॉयमेंट
एग्रीगेशन सेवा को डिप्लॉय करने के लिए, यह तरीका अपनाएं:
तीसरा चरण. एग्रीगेशन सेवा को डिप्लॉय करना: AWS पर एग्रीगेशन सेवा को डिप्लॉय करना
तीसरा चरण. एग्रीगेशन सेवा के डेटा स्टोर करने की जगह को क्लोन करें
तीसरा चरण. पहले से बनी डिपेंडेंसी डाउनलोड करें
तीसरा चरण. डेवलपमेंट एनवायरमेंट बनाना
तीसरा चरण. एग्रीगेशन सेवा को डिप्लॉय करना
3.1. Aggregation Service के रिपॉज़िटरी को क्लोन करना
अपने लोकल एनवायरमेंट में, एग्रीगेशन सेवा के GitHub रिपॉज़िटरी को क्लोन करें.
git clone https://github.com/privacysandbox/aggregation-service.git
3.2. पहले से बनी डिपेंडेंसी डाउनलोड करना
एग्रीगेशन सेवा के रिपॉज़िटरी को क्लोन करने के बाद, रिपॉज़िटरी के Terraform फ़ोल्डर और उससे जुड़े क्लाउड फ़ोल्डर पर जाएं. अगर आपका cloud_provider AWS है, तो
पर जाएं
cd <repository_root>/terraform/aws
में, download_prebuilt_dependencies.sh
को लागू करें.
bash download_prebuilt_dependencies.sh
3.3. डेवलपमेंट एनवायरमेंट बनाना
में डेवलपर एनवायरमेंट बनाएं. dev
नाम का फ़ोल्डर बनाएं.
mkdir dev
demo
फ़ोल्डर के कॉन्टेंट को dev
फ़ोल्डर में कॉपी करें.
cp -R demo/* dev
अपने dev
फ़ोल्डर में ले जाएं.
cd dev
अपनी main.tf
फ़ाइल अपडेट करें और फ़ाइल में बदलाव करने के लिए, input
के लिए i
दबाएं.
vim main.tf
लाल बॉक्स में मौजूद कोड से # हटाकर, बकेट और कुंजी के नाम अपडेट करें.
AWS main.tf के लिए:
बिना टिप्पणी वाला कोड कुछ ऐसा दिखेगा.
backend "s3" {
bucket = "<tf_state_bucket_name>"
key = "<environment_name>.tfstate"
region = "us-east-1"
}
अपडेट पूरा होने के बाद, उन्हें सेव करें. इसके बाद, esc
-> :wq!
दबाकर एडिटर से बाहर निकलें. इससे, main.tf
पर अपडेट सेव हो जाते हैं.
इसके बाद, example.auto.tfvars
का नाम बदलकर dev.auto.tfvars
करें.
mv example.auto.tfvars dev.auto.tfvars
फ़ाइल में बदलाव करने के लिए, dev.auto.tfvars
को अपडेट करें और input
के लिए i
दबाएं.
vim dev.auto.tfvars
इमेज में दिए गए लाल बॉक्स में मौजूद फ़ील्ड को, एग्रीगेशन सेवा को शामिल करने, एनवायरमेंट, और सूचना वाले ईमेल के दौरान दिए गए सही AWS ARN पैरामीटर से अपडेट करें.
अपडेट होने के बाद, esc
-> :wq!
दबाएं. इससे dev.auto.tfvars
फ़ाइल सेव हो जाती है और यह इस इमेज की तरह दिखती है.
3.4. एग्रीगेशन सेवा को डिप्लॉय करना
Aggregation Service को डिप्लॉय करने के लिए, उसी फ़ोल्डर
में Terraform को शुरू करें.
terraform init
इससे आपको इस इमेज जैसा कुछ दिखना चाहिए:
Terraform को शुरू करने के बाद, Terraform को लागू करने का प्लान बनाएं. यहां जोड़े जाने वाले संसाधनों की संख्या और अन्य ज़रूरी जानकारी दिखती है. यह जानकारी, नीचे दी गई इमेज जैसी होती है.
terraform plan
यहां "प्लान" की खास जानकारी देखी जा सकती है. अगर यह नया डिप्लॉयमेंट है, तो आपको उन संसाधनों की संख्या दिखेगी जिन्हें बदलने के लिए 0 और नष्ट करने के लिए 0 के साथ जोड़ा जाएगा.
यह प्रोसेस पूरी करने के बाद, Terraform को लागू किया जा सकता है.
terraform apply
Terraform से कार्रवाइयां करने की पुष्टि करने के लिए कहा जाने पर, वैल्यू में yes
डालें.
terraform apply
पूरा होने के बाद, createJob
और getJob
के लिए ये एंडपॉइंट दिखाए जाते हैं. सेक्शन 1.9 में, Postman में आपको जिस frontend_api_id
को अपडेट करना है वह भी दिखाया जाता है.
4. एग्रीगेशन सेवा का इनपुट बनाना
एग्रीगेशन सेवा में एक साथ कई फ़ाइलें अपलोड करने के लिए, AVRO रिपोर्ट बनाएं.
चौथा चरण. एग्रीगेशन सेवा के लिए इनपुट बनाना: एग्रीगेशन सेवा के लिए बैच में भेजी जाने वाली एग्रीगेशन सेवा रिपोर्ट बनाएं.
चौथा चरण. ट्रिगर रिपोर्ट
चौथा चरण. अलग-अलग डेटा को मिलाकर तैयार की जा सकने वाली रिपोर्ट इकट्ठा करना
चौथा चरण. रिपोर्ट को AVRO में बदलें
चरण 4.4. आउटपुट डोमेन AVRO बनाना
4.1. ट्रिगर रिपोर्ट
Privacy Sandbox के डेमो वाली साइट पर जाएं. इससे निजी एग्रीगेशन रिपोर्ट ट्रिगर होती है. रिपोर्ट chrome://private-aggregation-internals
पर देखी जा सकती है.
अगर आपकी रिपोर्ट "मंज़ूरी बाकी है" स्टेटस में है, तो रिपोर्ट चुनें और "चुनी गई रिपोर्ट भेजें" पर क्लिक करें.
4.2. अलग-अलग डेटा को मिलाकर तैयार की गई रिपोर्ट इकट्ठा करना
अपने एपीआई के .well-known
एंडपॉइंट से, एग्रीगेट की जा सकने वाली रिपोर्ट इकट्ठा करें.
- निजी एग्रीगेशन
[reporting-origin] /.well-known/private-aggregation/report-shared-storage
- एट्रिब्यूशन रिपोर्टिंग - खास जानकारी वाली रिपोर्ट
[reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution
इस कोडलैब में, आपको मैन्युअल तरीके से रिपोर्ट कलेक्शन करना होगा. प्रोडक्शन में, विज्ञापन टेक्नोलॉजी विशेषज्ञों को प्रोग्राम के हिसाब से रिपोर्ट इकट्ठा करके उन्हें बदलना होता है.
chrome://private-aggregation-internals
में, [reporting-origin]/.well-known/private-aggregation/report-shared-storage
एंडपॉइंट में मिला "रिपोर्ट बॉडी" कॉपी करें.
पक्का करें कि "रिपोर्ट बॉडी" में, aggregation_coordinator_origin
में https://publickeyservice.msmt.aws.privacysandboxservices.com
हो. इसका मतलब है कि रिपोर्ट, AWS की एग्रीगेट की जा सकने वाली रिपोर्ट है.
JSON "रिपोर्ट बॉडी" को JSON फ़ाइल में डालें. इस उदाहरण में, vim का इस्तेमाल किया जा सकता है. हालांकि, आपके पास अपनी पसंद का कोई भी टेक्स्ट एडिटर इस्तेमाल करने का विकल्प है.
vim report.json
रिपोर्ट को report.json
में चिपकाएं और अपनी फ़ाइल सेव करें.
4.3. रिपोर्ट को AVRO में बदलना
.well-known
एंडपॉइंट से मिली रिपोर्ट, JSON फ़ॉर्मैट में होती हैं. इन्हें AVRO रिपोर्ट फ़ॉर्मैट में बदलना ज़रूरी है. JSON रिपोर्ट मिलने के बाद, अपने रिपोर्ट फ़ोल्डर पर जाएं और aggregatable_report_converter.jar
का इस्तेमाल करके, डीबग की जा सकने वाली रिपोर्ट बनाएं. इससे आपकी मौजूदा डायरेक्ट्री में, report.avro
नाम की एक रिपोर्ट बन जाएगी. इसमें डेटा इकट्ठा किया जा सकता है.
java -jar aggregatable_report_converter.jar \
--request_type convertToAvro \
--input_file report.json
4.4. आउटपुट डोमेन AVRO बनाना
output_domain.avro
फ़ाइल बनाने के लिए, आपको बकेट की ऐसी कुंजियां चाहिए जिन्हें रिपोर्ट से वापस पाया जा सके.
बकेट कुंजियों को विज्ञापन टेक्नोलॉजी से डिज़ाइन किया जाता है. हालांकि, इस मामले में, साइट Privacy Sandbox डेमो बकेट कुंजियां बनाता है. इस साइट के लिए निजी एग्रीगेशन, डीबग मोड में है. इसलिए, बकेट कुंजी पाने के लिए, "रिपोर्ट बॉडी" से debug_cleartext_payload
का इस्तेमाल किया जा सकता है.
अब रिपोर्ट के मुख्य हिस्से से debug_cleartext_payload
को कॉपी करें.
goo.gle/ags-payload-decoder खोलें और "इनपुट" बॉक्स में अपना debug_cleartext_payload
चिपकाएं. इसके बाद, "डिकोड करें" पर क्लिक करें.
यह पेज, बकेट की कुंजी की दशमलव वैल्यू दिखाता है. यहां बकेट की एक सैंपल कुंजी दी गई है.
अब हमारे पास बकेट की कुंजी है, इसलिए output_domain.avro
बनाएं. पक्का करें कि आपने
को, वापस लाई गई बकेट कुंजी से बदल दिया हो.
java -jar aggregatable_report_converter.jar \
--request_type createDomainAvro \
--bucket_key <bucket key>
स्क्रिप्ट, आपके मौजूदा फ़ोल्डर में output_domain.avro
फ़ाइल बनाती है.
4.5. रिपोर्ट को AWS बकेट में ले जाना
सेक्शन 3.2.3 में बताई गई AVRO रिपोर्ट और सेक्शन 3.2.4 में बताए गए आउटपुट डोमेन बन जाने के बाद, रिपोर्ट और आउटपुट डोमेन को रिपोर्टिंग S3 बकेट में ले जाएं.
अगर आपने अपने लोकल एनवायरमेंट में AWS CLI सेट अप किया है, तो रिपोर्ट को उससे जुड़ी S3 बकेट और रिपोर्ट फ़ोल्डर में कॉपी करने के लिए, यहां दिए गए निर्देशों का इस्तेमाल करें.
aws s3 cp report.avro s3://<report_bucket_name>/<report_folder>/
aws s3 cp output_domain.avro s3://<report_bucket_name>/<output_domain_folder>/
5. एग्रीगेशन सेवा का इस्तेमाल
terraform apply
से आपको create_job_endpoint
, get_job_endpoint
, और frontend_api_id
मिलते हैं. frontend_api_id
को कॉपी करें और इसे Postman के उस ग्लोबल वैरिएबल frontend_api_id
में डालें जिसे आपने ज़रूरी शर्तों वाले सेक्शन 1.9 में सेट अप किया था.
पांचवां चरण. एग्रीगेशन सेवा का इस्तेमाल: खास जानकारी वाली रिपोर्ट बनाने और उनकी समीक्षा करने के लिए, Aggregation Service API का इस्तेमाल करें.
पांचवां चरण. एक साथ कई प्रोसेस करने के लिए, createJob एंडपॉइंट का इस्तेमाल करना
पांचवां चरण. बैच का स्टेटस पाने के लिए, getJob एंडपॉइंट का इस्तेमाल करना
पांचवां चरण. खास जानकारी वाली रिपोर्ट की समीक्षा करना
5.1. बैच में डेटा भेजने के लिए createJob
एंडपॉइंट का इस्तेमाल करना
Postman में, "Privacy Sandbox" कलेक्शन खोलें और "createJob" चुनें.
अनुरोध पेलोड डालने के लिए, "बॉडी" चुनें और "रॉ" चुनें.
createJob
पेलोड स्कीमा, github में उपलब्ध है और यह इस तरह दिखता है. <>
को सही फ़ील्ड से बदलें.
{
"job_request_id": "<job_request_id>",
"input_data_blob_prefix": "<report_folder>/<report_name>.avro",
"input_data_bucket_name": "<bucket_name>",
"output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
"output_data_bucket_name": "<bucket_name>",
"job_parameters": {
"output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
"output_domain_bucket_name": "<bucket_name>",
"attribution_report_to": "<reporting origin of report>",
"reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
"report_error_threshold_percentage": "10",
"debug_run": "true"
}
}
"भेजें" पर क्लिक करने के बाद, job_request_id
के साथ नौकरी बन जाती है. एग्रीगेशन सेवा से अनुरोध स्वीकार होने के बाद, आपको एचटीटीपी 202 का जवाब मिलना चाहिए. रिटर्न किए जाने वाले अन्य संभावित कोड, एचटीटीपी रिस्पॉन्स कोड में देखे जा सकते हैं
5.2. बैच का स्टेटस पाने के लिए, getJob एंडपॉइंट का इस्तेमाल करना
नौकरी के अनुरोध की स्थिति देखने के लिए, getJob
एंडपॉइंट का इस्तेमाल किया जा सकता है. "निजता सैंडबॉक्स" कलेक्शन में, "getJob" चुनें.
"पैरामीटर" में, job_request_id की वैल्यू को job_request_id
पर अपडेट करें. यह वैल्यू, createJob
अनुरोध में भेजी गई थी.
getJob
के नतीजे में, आपको नौकरी के अनुरोध की स्थिति दिखनी चाहिए. साथ ही, एचटीटीपी स्टेटस 200 होना चाहिए. अनुरोध के "बॉडी" में ज़रूरी जानकारी शामिल होती है. जैसे, job_status
, return_message
, और error_messages
(अगर जॉब में कोई गड़बड़ी हुई है).
जनरेट की गई डेमो रिपोर्ट की रिपोर्टिंग साइट, आपके AWS आईडी पर शामिल की गई साइट से अलग होती है. इसलिए, आपको PRIVACY_BUDGET_AUTHORIZATION_ERROR
return_code के साथ जवाब मिल सकता है. यह सामान्य है, क्योंकि रिपोर्ट के रिपोर्टिंग ऑरिजिन की साइट, AWS आईडी के लिए ऑनबोर्ड की गई रिपोर्टिंग साइट से मेल नहीं खाती.
{
"job_status": "FINISHED",
"request_received_at": "2023-12-07T22:50:58.830956Z",
"request_updated_at": "2023-12-07T22:51:10.526326456Z",
"job_request_id": "<job_request_id>",
"input_data_blob_prefix": "<report_folder>/<report_name>.avro",
"input_data_bucket_name": "<input_bucket_name>",
"output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
"output_data_bucket_name": "<output_bucket_name>",
"postback_url": "",
"result_info": {
"return_code": "PRIVACY_BUDGET_AUTHORIZATION_ERROR",
"return_message": "Aggregation job successfully processed",
"error_summary": {
"error_counts": [],
"error_messages": []
},
"finished_at": "2023-12-07T22:51:10.517730898Z"
},
"job_parameters": {
"debug_run": "true",
"output_domain_bucket_name": "<output_domain_bucket_name>",
"output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
"attribution_report_to": "https://privacy-sandbox-demos-dsp.dev",
"reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
},
"request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}
5.3. खास जानकारी वाली रिपोर्ट की समीक्षा करना
आउटपुट S3 बकेट में खास जानकारी वाली रिपोर्ट मिलने के बाद, उसे अपने लोकल एनवायरमेंट में डाउनलोड किया जा सकता है. समरी रिपोर्ट, AVRO फ़ॉर्मैट में होती हैं और इन्हें JSON में बदला जा सकता है. नीचे दिए गए निर्देश का इस्तेमाल करके, अपनी रिपोर्ट पढ़ने के लिए aggregatable_report_converter.jar
का इस्तेमाल किया जा सकता है.
java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file <summary_report_avro>
इससे हर बकेट की की की एग्रीगेट की गई वैल्यू का JSON दिखता है, जो इस इमेज से मिलता-जुलता है.
अगर आपके createJob
अनुरोध में debug_run
को true
के तौर पर शामिल किया गया है, तो आपको समरी रिपोर्ट output_data_blob_prefix
में मौजूद डीबग फ़ोल्डर में मिल सकती है. रिपोर्ट, AVRO फ़ॉर्मैट में है और इसे पिछले कमांड का इस्तेमाल करके JSON में बदला जा सकता है.
रिपोर्ट में बकेट की, बिना गड़बड़ी वाली मेट्रिक, और गड़बड़ी वाली मेट्रिक शामिल होती है. गड़बड़ी वाली मेट्रिक को बिना गड़बड़ी वाली मेट्रिक में जोड़कर, खास जानकारी वाली रिपोर्ट बनाई जाती है. रिपोर्ट, नीचे दी गई इमेज जैसी दिखती है.
एनोटेशन में in_reports
और in_domain
भी शामिल होते हैं. इनका मतलब है:
- in_reports - बकेट कीवर्ड, एग्रीगेट की जा सकने वाली रिपोर्ट में उपलब्ध होता है.
- in_domain - output_domain AVRO फ़ाइल में बकेट पासकोड उपलब्ध होता है.