1. ज़रूरी शर्तें
इस कोडलैब को लागू करने के लिए, कुछ शर्तों को पूरा करना ज़रूरी है. हर शर्त को इसी हिसाब से मार्क किया जाता है, फिर चाहे वह "लोकल टेस्टिंग" या "एग्रीगेशन सेवा" के लिए ज़रूरी हो.
1.1. स्थानीय टेस्टिंग टूल डाउनलोड करें (लोकल टेस्टिंग)
स्थानीय टेस्टिंग के लिए, स्थानीय टेस्टिंग टूल को डाउनलोड करना होगा. यह टूल, एन्क्रिप्ट (सुरक्षित) नहीं की गई डीबग रिपोर्ट से खास जानकारी वाली रिपोर्ट जनरेट करेगा.
लोकल टेस्टिंग टूल को GitHub में Lambda JAR संग्रह से डाउनलोड किया जा सकता है. इसका नाम LocalTestingTool_{version}.jar
होना चाहिए.
1.2. पक्का करें कि JAVA JRE इंस्टॉल किया गया हो (लोकल टेस्टिंग और एग्रीगेशन सर्विस)
"Terminal" खोलें और java --version
का इस्तेमाल करके देखें कि आपकी मशीन पर Java या OpenJDK इंस्टॉल है या नहीं.
अगर यह इंस्टॉल नहीं किया गया है, तो Java साइट या openJDK साइट से इसे डाउनलोड और इंस्टॉल करें.
1.3. एग्रीगेट किए जा सकने वाले रिपोर्ट कन्वर्टर को डाउनलोड करें (लोकल टेस्टिंग और एग्रीगेशन सर्विस)
प्राइवसी सैंडबॉक्स डेमोज़ GitHub रिपॉज़िटरी से, इकट्ठा की जा सकने वाली रिपोर्ट कन्वर्टर की कॉपी डाउनलोड की जा सकती है.
1.4. प्राइवसी सैंडबॉक्स के एपीआई (लोकल टेस्टिंग और एग्रीगेशन सेवा) को चालू करें
अपने ब्राउज़र में, chrome://flags/#privacy-sandbox-ads-apis
पर जाएं और प्राइवसी सैंडबॉक्स एपीआई को चालू करें.
पक्का करें कि आपकी तीसरे पक्ष की कुकी चालू हैं.
अपने ब्राउज़र में chrome://settings/cookies
पर जाएं. इसके बाद, "गुप्त मोड में तीसरे पक्ष की कुकी ब्लॉक करें" को चुनें.
1.5 वेब और Android ऐप्लिकेशन में रजिस्टर करना (एग्रीगेशन सेवा)
किसी प्रोडक्शन एनवायरमेंट में प्राइवसी सैंडबॉक्स के एपीआई का इस्तेमाल करने के लिए, पक्का करें कि आपने Chrome और Android, दोनों के लिए रजिस्ट्रेशन और प्रमाणित करने की प्रक्रिया पूरी कर ली हो.
लोकल टेस्टिंग के लिए, Chrome फ़्लैग और सीएलआई स्विच का इस्तेमाल करके, रजिस्ट्रेशन बंद किया जा सकता है.
हमारे डेमो के लिए Chrome फ़्लैग का इस्तेमाल करने के लिए, chrome://flags/#privacy-sandbox-enrollment-overrides
पर जाएं और अपनी साइट पर ओवरराइड को अपडेट करें या अगर आप हमारी डेमो साइट का इस्तेमाल कर रहे हैं, तो किसी अपडेट की ज़रूरत नहीं है.
1.6 एग्रीगेशन सेवा में शामिल होना (एग्रीगेशन सेवा)
एग्रीगेशन सर्विस का इस्तेमाल करने के लिए, कोऑर्डिनेटर को शामिल करना ज़रूरी होता है. अपनी रिपोर्टिंग साइट का पता, AWS खाता आईडी, और अन्य जानकारी देकर, एग्रीगेशन सेवा में शामिल होने का फ़ॉर्म भरें.
1.7 क्लाउड की सेवा देने वाली कंपनी (एग्रीगेशन सेवा)
एग्रीगेशन सेवा के लिए एक भरोसेमंद एक्ज़ीक्यूशन एनवायरमेंट का इस्तेमाल करना ज़रूरी होता है, जो क्लाउड एनवायरमेंट का इस्तेमाल करता है. एग्रीगेशन सेवा, Amazon Web Services (AWS) और Google Cloud (GCP) पर काम करती है. इस कोडलैब में सिर्फ़ AWS इंटिग्रेशन शामिल होगा.
AWS से एक भरोसेमंद एक्ज़ीक्यूशन एनवायरमेंट मिलता है, जिसे Nitro Enclaves कहा जाता है. पक्का करें कि आपके पास AWS खाता है और अपना AWS CLI एनवायरमेंट सेटअप करने के लिए AWS सीएलआई इंस्टॉल करने और अपडेट करने के निर्देशों का पालन करें.
अगर आपका AWS CLI नया है, तो आप CLI कॉन्फ़िगरेशन निर्देशों का इस्तेमाल करके अपना AWS CLI कॉन्फ़िगर कर सकते हैं.
1.7.1. AWS S3 बकेट बनाएं
टेरेस की स्थिति सेव करने के लिए 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 टेराफ़ॉर्म (एग्रीगेशन सेवा)
यह कोडलैब, एग्रीगेशन सेवा को डिप्लॉय करने के लिए, Tenraform का इस्तेमाल करता है. पक्का करें कि आपके लोकल एनवायरमेंट में टेराफ़ॉर्म बाइनरी इंस्टॉल किया गया हो.
अपने लोकल एनवायरमेंट में टेराफ़ॉर्म बाइनरी डाउनलोड करें.
Teraform बाइनरी के डाउनलोड हो जाने के बाद, फ़ाइल को एक्स्ट्रैक्ट करें औरterraform बाइनरी को /usr/local/bin
में ले जाएं.
cp <directory>/terraform /usr/local/bin
पक्का करें कि कक्षा के पाथ पर Teraform ऐप्लिकेशन उपलब्ध है या नहीं.
terraform -v
1.9 पोस्टमैन (एग्रीगेशन सेवा AWS के लिए)
इस कोडलैब के लिए, अनुरोध को मैनेज करने के लिए पोस्टमैन का इस्तेमाल करें.
फ़ाइल फ़ोल्डर बनाने के लिए, सबसे ऊपर मौजूद नेविगेशन आइटम "फ़ाइल फ़ोल्डर" पर जाएं और "फ़ाइल फ़ोल्डर बनाएं" को चुनें.
"खाली फ़ाइल फ़ोल्डर" चुनें. इसके बाद, 'आगे बढ़ें' पर क्लिक करें और इसे "प्राइवसी सैंडबॉक्स" नाम दें. "निजी" चुनें और "बनाएं" पर क्लिक करें.
पहले से कॉन्फ़िगर किया गया फ़ाइल फ़ोल्डर JSON कॉन्फ़िगरेशन और ग्लोबल एनवायरमेंट फ़ाइलें डाउनलोड करें.
"इंपोर्ट करें" बटन का इस्तेमाल करके, JSON फ़ाइलों को "मेरा फ़ाइल फ़ोल्डर" में इंपोर्ट करें.
इससे createJob
और getJob
एचटीटीपी अनुरोधों के साथ-साथ, प्राइवसी सैंडबॉक्स का कलेक्शन बन जाएगा.
"एनवायरमेंट क्विक लुक" की मदद से, AWS "ऐक्सेस कुंजी" और "सीक्रेट कुंजी" को अपडेट करें.
"बदलाव करें" पर क्लिक करें. इसके बाद, "access_key" और "secret_key", दोनों की "मौजूदा वैल्यू" अपडेट करें. ध्यान दें कि frontend_api_id
को इस दस्तावेज़ के सेक्शन 3.1.4 में दिया जाएगा. हम us-east-1 इलाके का इस्तेमाल करने की सलाह देते हैं. हालांकि, अगर आपको किसी दूसरे इलाके में डिप्लॉय करना है, तो रिलीज़ की गई एएमआई को अपने खाते में कॉपी ज़रूर करें या दी गई स्क्रिप्ट का इस्तेमाल करके खुद ही बिल्ड करें.
2. स्थानीय टेस्टिंग कोडलैब
अपनी मशीन पर लोकल टेस्टिंग टूल का इस्तेमाल करके, एग्रीगेशन किया जा सकता है. साथ ही, एन्क्रिप्ट (सुरक्षित) नहीं की गई डीबग रिपोर्ट का इस्तेमाल करके खास जानकारी वाली रिपोर्ट जनरेट की जा सकती हैं.
कोडलैब का तरीका
चरण 2.1. ट्रिगर रिपोर्ट: रिपोर्ट इकट्ठा करने के लिए, निजी एग्रीगेशन रिपोर्टिंग को ट्रिगर करें.
चरण 2.2. एग्रीगेट की जा सकने वाली डीबग रिपोर्ट बनाएं: इकट्ठा की गई JSON रिपोर्ट को AVRO के फ़ॉर्मैट वाली रिपोर्ट में बदलें.
यह चरण, विज्ञापन टेक्नोलॉजी से जुड़ी एपीआई रिपोर्टिंग एंडपॉइंट से रिपोर्ट इकट्ठा करने और JSON रिपोर्ट को AVRO फ़ॉर्मैट की गई रिपोर्ट में बदलने की तरह ही होगा.
चरण 2.3. डीबग रिपोर्ट से बकेट कुंजी को पार्स करें: बकेट कुंजी को विज्ञापन तकनीक से डिज़ाइन किया जाता है. इस कोडलैब में, बकेट पहले से तय होती हैं. इसलिए, बकेट की उपलब्ध कराई गई कुंजियों को बताए गए तरीके से फिर से हासिल करें.
चरण 2.4. आउटपुट डोमेन AVRO बनाएं: बकेट कुंजियां पाने के बाद, आउटपुट डोमेन AVRO फ़ाइल बनाएं.
चरण 2.5. लोकल टेस्टिंग टूल का इस्तेमाल करके खास जानकारी वाली रिपोर्ट बनाएं: लोकल एनवायरमेंट में खास जानकारी वाली रिपोर्ट बनाने के लिए, लोकल टेस्टिंग टूल का इस्तेमाल करें.
चरण 2.6. खास जानकारी वाली रिपोर्ट की समीक्षा करें: लोकल टेस्टिंग टूल से बनाई गई खास जानकारी वाली रिपोर्ट की समीक्षा करें.
2.1. ट्रिगर रिपोर्ट
प्राइवसी सैंडबॉक्स डेमो साइट पर जाएं. इससे निजी एग्रीगेशन रिपोर्ट ट्रिगर होती है. आप 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
फ़ाइल बनाने के लिए, आपको बकेट कुंजियों की ज़रूरत होगी, जिन्हें रिपोर्ट से हासिल किया जा सके.
बकेट पासकोड एपीआई के कॉलर के ज़रिए डिज़ाइन किए जाते हैं और डेमो में पहले से बनाई गई, बकेट कुंजियों के उदाहरण शामिल होते हैं. डेमो ने निजी एग्रीगेशन के लिए डीबग मोड को चालू कर दिया है. इसलिए, बकेट कुंजी को वापस पाने के लिए, "रिपोर्ट का मुख्य हिस्सा" से डीबग cleartext पेलोड को पार्स किया जा सकता है.. हालांकि, इस मामले में साइट के प्राइवसी सैंडबॉक्स डेमो, बकेट कुंजियां बनाता है. इस साइट के लिए निजी एग्रीगेशन, डीबग मोड में है. इसलिए, बकेट कुंजी पाने के लिए, "रिपोर्ट का मुख्य हिस्सा" से debug_cleartext_payload
का इस्तेमाल किया जा सकता है.
रिपोर्ट के मुख्य हिस्से से debug_cleartext_payload
को कॉपी करें.
प्राइवेट एग्रीगेशन के लिए डीबग पेलोड डिकोडर टूल को खोलें और अपने debug_cleartext_payload
को "INPUT" बॉक्स में चिपकाएं. इसके बाद, "डिकोड" पर क्लिक करें.
पेज, बकेट कुंजी का दशमलव मान दिखाता है. बकेट कुंजी का सैंपल यहां दिया गया है.
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 में बदलने के लिए विज्ञापन टेक्नोलॉजी को कोड करना चाहिए.
अपने कोडलैब (कोड बनाना सीखना) के लिए, हम AVRO रिपोर्ट को वापस JSON में बदलने के लिए, दिए गए aggregatable_report_converter.jar
टूल का इस्तेमाल करेंगे.
java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro
इससे, नीचे दी गई इमेज जैसी रिपोर्ट मिलती है. इसी डायरेक्ट्री में output.json
रिपोर्ट भी बनाई गई है.
खास जानकारी वाली रिपोर्ट देखने के लिए, अपनी पसंद के एडिटर में JSON फ़ाइल खोलें.
3. एग्रीगेशन सेवा का डिप्लॉयमेंट
एग्रीगेशन सेवा को डिप्लॉय करने के लिए, यह तरीका अपनाएं:
तीसरा चरण. एग्रीगेशन सर्विस डिप्लॉयमेंट: AWS पर एग्रीगेशन सेवा को डिप्लॉय करें
तीसरा चरण. एग्रीगेशन सर्विस रिपॉज़िटरी का क्लोन बनाएं
चरण 3.2. पहले से बनी डिपेंडेंसी डाउनलोड करें
चरण 3.3. डेवलपमेंट एनवायरमेंट बनाएं
चरण 3.4. एग्रीगेशन सेवा डिप्लॉय करें
3.1. एग्रीगेशन सेवा के डेटा स्टोर करने की जगह का क्लोन बनाएं
अपने स्थानीय एनवायरमेंट में, एग्रीगेशन सेवा GitHub डेटा स्टोर करने की जगह का क्लोन बनाएं.
git clone https://github.com/privacysandbox/aggregation-service.git
3.2. पहले से बनी डिपेंडेंसी डाउनलोड करें
एग्रीगेशन सर्विस डेटा स्टोर करने की जगह को क्लोन करने के बाद, डेटा स्टोर करने की जगह के Teraform फ़ोल्डर और उससे जुड़े क्लाउड फ़ोल्डर में जाएं. अगर आपका 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
फ़ाइल अपडेट करें और फ़ाइल में बदलाव करने के लिए, i
दबाएं. input
vim main.tf
लाल बॉक्स में मौजूद कोड की टिप्पणी हटाने के लिए, # हटाएं. साथ ही, बकेट और कुंजी के नाम अपडेट करें.
AWS private.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. एग्रीगेशन सेवा डिप्लॉय करें
एग्रीगेशन सेवा को डिप्लॉय करने के लिए, उसी फ़ोल्डर
में, terraform को शुरू करें.
terraform init
इससे नीचे दी गई इमेज जैसा कुछ दिखना चाहिए:
Teraform के शुरू होने के बाद, टेरेस पर काम करने का प्लान बनाएं. जहां यह जोड़े जाने वाले संसाधनों की संख्या और नीचे दी गई इमेज से मिलती-जुलती अन्य जानकारी दिखाता है.
terraform plan
यह "प्लान" खास जानकारी में देखा जा सकता है. अगर यह नया डिप्लॉयमेंट है, तो आपको संसाधनों की संख्या दिखेगी. इसमें बदलाव करने के लिए शून्य और बंद करने के लिए शून्य जोड़ा जाएगा.
यह प्रक्रिया पूरी करने के बाद, Teraform का इस्तेमाल शुरू किया जा सकता है.
terraform apply
टेरेस की मदद से कार्रवाइयां करने के लिए, पुष्टि करने का प्रॉम्प्ट मिलने पर, वैल्यू में yes
डालें.
terraform apply
खत्म होने के बाद, createJob
और getJob
के लिए ये एंडपॉइंट दिखाए जाते हैं. सेक्शन 1.9 के तहत पोस्टमैन में जिस frontend_api_id
को अपडेट करना है उसे भी दिखाया जाता है.
4. एग्रीगेशन सेवा के लिए इनपुट बनाना
एग्रीगेशन सेवा में बैच बनाने के लिए AVRO रिपोर्ट बनाएं.
चौथा चरण. एग्रीगेशन सेवा इनपुट बनाना: एग्रीगेशन सेवा की ऐसी रिपोर्ट बनाएं जिन्हें एग्रीगेशन सेवा के लिए बैच किया गया हो.
चरण 4.1. ट्रिगर रिपोर्ट
चरण 4.2. एग्रीगेट होने वाली रिपोर्ट इकट्ठा करना
चौथा चरण. रिपोर्ट को AVRO में बदलें
चरण 4.4. आउटपुट डोमेन AVRO बनाएं
4.1. ट्रिगर रिपोर्ट
प्राइवसी सैंडबॉक्स डेमो साइट पर जाएं. इससे निजी एग्रीगेशन रिपोर्ट ट्रिगर होती है. आप 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
फ़ाइल बनाने के लिए, आपको बकेट कुंजियों की ज़रूरत होगी, जिन्हें रिपोर्ट से हासिल किया जा सके.
बकेट कुंजियां, विज्ञापन तकनीक के ज़रिए तैयार की जाती हैं. हालांकि, इस मामले में, साइट प्राइवसी सैंडबॉक्स डेमो बकेट कुंजियां बनाता है. इस साइट के लिए निजी एग्रीगेशन, डीबग मोड में है. इसलिए, बकेट कुंजी पाने के लिए, "रिपोर्ट का मुख्य हिस्सा" से debug_cleartext_payload
का इस्तेमाल किया जा सकता है.
रिपोर्ट के मुख्य हिस्से से debug_cleartext_payload
को कॉपी करें.
goo.gle/ags-payload-decoder खोलें और debug_cleartext_payload
को "INPUT" बॉक्स में चिपकाएं. इसके बाद, "Decode" पर क्लिक करें.
पेज, बकेट कुंजी का दशमलव मान दिखाता है. बकेट कुंजी का सैंपल यहां दिया गया है.
अब आपके पास बकेट कुंजी है, तो output_domain.avro
बनाएं. पक्का करें कि आपने
को वापस मिली बकेट कुंजी से बदल दिया हो.
java -jar aggregatable_report_converter.jar \
--request_type createDomainAvro \
--bucket_key <bucket key>
स्क्रिप्ट आपके मौजूदा फ़ोल्डर में output_domain.avro
फ़ाइल बनाती है.
4.5. रिपोर्ट को AWS बकेट में ले जाना
AVRO रिपोर्ट (सेक्शन 3.2.3 से) और आउटपुट डोमेन (सेक्शन 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
को कॉपी करें और इसे ज़रूरी सेक्शन 1.9 में सेटअप किए गए पोस्टमैन ग्लोबल वैरिएबल frontend_api_id
में रखें.
पांचवां चरण. एग्रीगेशन सेवा का इस्तेमाल: खास जानकारी वाली रिपोर्ट बनाने और खास जानकारी वाली रिपोर्ट की समीक्षा करने के लिए, एग्रीगेशन सर्विस एपीआई का इस्तेमाल करें.
चरण 5.1. बैच में जॉब एंडपॉइंट बनाने की सुविधा का इस्तेमाल किया जा रहा है
चरण 5.2. बैच की स्थिति वापस पाने के लिए getjob Endpoint का इस्तेमाल करना
चरण 5.3. खास जानकारी वाली रिपोर्ट की समीक्षा करना
5.1. बैच में createJob
एंडपॉइंट का इस्तेमाल किया जा रहा है
पोस्टमैन में, "प्राइवसी सैंडबॉक्स" कलेक्शन खोलें और "जॉब बनाएं" चुनें.
अपने अनुरोध के पेलोड रखने के लिए, "मुख्य हिस्सा" और फिर "रॉ" चुनें.
createJob
पेलोड स्कीमा, github में उपलब्ध है और यह इनके जैसा दिखता है. <>
को सही फ़ील्ड से बदलें.
{
"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>",
"job_parameters": {
"output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
"output_domain_bucket_name": "<output_domain_bucket_name>",
"attribution_report_to": "<reporting origin of report>",
"report_error_threshold_percentage": "10",
"debug_run": "true"
}
}
"भेजें" पर क्लिक करने के बाद, job_request_id
के साथ जॉब बना दिया जाता है. एग्रीगेशन सर्विस के अनुरोध स्वीकार करने के बाद, आपको एचटीटीपी 202 रिस्पॉन्स मिलेगा. सामान लौटाने के दूसरे कोड, एचटीटीपी रिस्पॉन्स कोड में देखे जा सकते हैं
5.2. बैच की स्थिति वापस पाने के लिए getjob एंडपॉइंट का इस्तेमाल करना
जॉब के अनुरोध की स्थिति देखने के लिए, getJob
एंडपॉइंट का इस्तेमाल किया जा सकता है. "getJob" कलेक्शन में, "getJob" को चुनें.
"Params" में, जॉब_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-news.dev"
},
"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 - बकेट कुंजी Checkout_domain AVRO फ़ाइल के अंदर उपलब्ध होती है.