AWS पर एग्रीगेशन सेवा के साथ काम करें

1. ज़रूरी शर्तें

यह कोडलैब (कोड बनाना सीखना) करने के लिए, कुछ ज़रूरी शर्तें पूरी करना ज़रूरी है. हर ज़रूरी शर्त को इसके हिसाब से मार्क किया जाता है कि क्या "लोकल टेस्टिंग" या "एग्रीगेशन सेवा" के लिए यह ज़रूरी है.

1.1. लोकल टेस्टिंग टूल डाउनलोड करें (लोकल टेस्टिंग)

लोकल टेस्टिंग के लिए, लोकल टेस्टिंग टूल डाउनलोड करना होगा. यह टूल, एन्क्रिप्ट (सुरक्षित) नहीं की गई डीबग रिपोर्ट से खास जानकारी वाली रिपोर्ट जनरेट करेगा.

लोकल टेस्टिंग टूल, GitHub में Lambda JAR आर्काइव्स में डाउनलोड किया जा सकता है. इसका नाम LocalTestingTool_{version}.jar होना चाहिए.

1.2. पक्का करें कि JAVA JRE इंस्टॉल किया गया हो (लोकल टेस्टिंग ऐंड एग्रीगेशन सर्विस)

"Terminal" खोलें और java --version का इस्तेमाल करके देखें कि आपकी मशीन में Java या OpenJDK इंस्टॉल है या नहीं.

java\n--version का इस्तेमाल करके java jre वर्शन की जांच करना

अगर इसे इंस्टॉल नहीं किया गया है, तो Java साइट या openJDK साइट से इसे डाउनलोड और इंस्टॉल किया जा सकता है.

1.3. एग्रीगेशन रिपोर्ट कन्वर्टर डाउनलोड करें (लोकल टेस्टिंग और एग्रीगेशन सेवा)

Privacy Sandbox Demos GitHub डेटा स्टोर करने की जगह से इकट्ठा की जा सकने वाली रिपोर्ट कन्वर्टर की कॉपी डाउनलोड की जा सकती है.

1.4. Ad Privacy API (लोकल टेस्टिंग और एग्रीगेशन सेवा) चालू करें

अपने ब्राउज़र में, chrome://settings/adPrivacy पर जाएं और Ad Privacy API को चालू करें.

पक्का करें कि तीसरे पक्ष की कुकी चालू हैं.

अपने ब्राउज़र में, chrome://settings/cookies पर जाएं और "गुप्त मोड में तीसरे पक्ष की कुकी ब्लॉक करें" को चुनें.

तीसरे पक्ष की कुकी chromesetting

1.5. वेब और Android पर रजिस्टर करना (एग्रीगेशन सेवा)

प्राइवसी सैंडबॉक्स एपीआई को प्रोडक्शन एनवायरमेंट में इस्तेमाल करने के लिए, पक्का करें कि आपने Chrome और Android, दोनों के लिए रजिस्ट्रेशन और पुष्टि करने की प्रक्रिया पूरी कर ली हो.

लोकल टेस्टिंग के लिए, Chrome फ़्लैग और सीएलआई स्विच का इस्तेमाल करके, रजिस्ट्रेशन करने की सुविधा बंद की जा सकती है.

हमारे डेमो के लिए Chrome फ़्लैग का इस्तेमाल करने के लिए, chrome://flags/#privacy-sandbox-enrollment-overrides पर जाएं और अपनी साइट में किए गए बदलावों को अपडेट करें. अगर आप हमारी डेमो साइट का इस्तेमाल करेंगे, तो आपको अपडेट करने की ज़रूरत नहीं है.

प्राइवसी सैंडबॉक्स में नाम दर्ज करने की प्रोसेस से, chromeflag की सेटिंग को बदला गया

1.6. एग्रीगेशन सेवा में शामिल होना (एग्रीगेशन सेवा)

एग्रीगेशन सेवा का इस्तेमाल करने के लिए, कोऑर्डिनेटर से संपर्क करना ज़रूरी होता है. रिपोर्टिंग साइट का पता, AWS खाता आईडी, और अन्य जानकारी देकर, एग्रीगेशन सेवा में शामिल होने के लिए फ़ॉर्म भरें.

1.7. क्लाउड सेवा देने वाली कंपनी (एग्रीगेशन सेवा)

एग्रीगेशन सेवा के लिए ऐसे भरोसेमंद एक्ज़ीक्यूशन एनवायरमेंट के इस्तेमाल की ज़रूरत होती है जो क्लाउड एनवायरमेंट का इस्तेमाल करता हो. एग्रीगेशन सेवा, Amazon Web Services (AWS) और Google Cloud (GCP) पर काम करती है. इस कोडलैब में सिर्फ़ AWS इंटिग्रेशन को शामिल किया जाएगा.

AWS, नाइट्रो एनक्लेव्स नाम का ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट देता है. पक्का करें कि आपके पास AWS खाता हो. साथ ही, अपने AWS सीएलआई एनवायरमेंट को सेटअप करने के लिए, AWS CLI इंस्टॉल करने और अपडेट करने से जुड़े निर्देशों का पालन करें.

अगर आपका AWS सीएलआई नया है, तो सीएलआई कॉन्फ़िगरेशन निर्देशों का इस्तेमाल करके अपने AWS सीएलआई को कॉन्फ़िगर किया जा सकता है.

1.7.1. AWS S3 बकेट बनाएं

Tenraform स्टेट को स्टोर करने के लिए 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 का इस्तेमाल करता है. पक्का करें कि आपके लोकल एनवायरमेंट में Terraform बाइनरी इंस्टॉल की गई हो.

अपने लोकल एनवायरमेंट में Terraform बाइनरी डाउनलोड करें.

टेराफ़ॉर्म बाइनरी डाउनलोड होने के बाद, इस फ़ाइल को निकालें और टेराफ़ॉर्म बाइनरी को /usr/local/bin में ले जाएं.

cp <directory>/terraform /usr/local/bin

पक्का करें कि टेराफ़ॉर्म, क्लासपाथ पर उपलब्ध है.

terraform -v

1.9. पोस्टमैन (एग्रीगेशन सर्विस AWS के लिए)

इस कोडलैब के लिए, अनुरोध के मैनेजमेंट के लिए Postman का इस्तेमाल करें.

वर्कस्पेस बनाने के लिए, "Workspace" के सबसे ऊपर मौजूद नेविगेशन आइटम पर जाएं और "Workspace बनाएं" को चुनें.

पोस्टमैन वर्कस्पेस

"खाली फ़ाइल फ़ोल्डर" चुनें. इसके बाद, 'आगे बढ़ें' पर क्लिक करें और इसे "Privacy Sandbox" नाम दें. "निजी" चुनें और "बनाएं" पर क्लिक करें.

पहले से कॉन्फ़िगर की गई, Workspace की JSON कॉन्फ़िगरेशन और Global Environment फ़ाइलें डाउनलोड करें.

"इंपोर्ट करें" बटन का इस्तेमाल करके, 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.

Chrome निजी एग्रीगेशन इंटरनल

अगर आपकी रिपोर्ट "मंज़ूरी बाकी है" स्टेटस में है, तो रिपोर्ट चुनें और "चुनी गई रिपोर्ट भेजें" पर क्लिक करें.

निजी एग्रीगेशन रिपोर्ट भेजें

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 में चिपकाएं और अपनी फ़ाइल सेव करें.

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 कॉपी करें.

reportbody से क्लीयरटेक्स्ट पेलोड डीबग करें

निजी एग्रीगेशन के लिए पेलोड डिकोडर खोलें और अपने 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 में बदलने के लिए कोड डालना चाहिए.

अपने कोडलैब के लिए, हम दिए गए aggregatable_report_converter.jar टूल का इस्तेमाल करके AVRO रिपोर्ट को वापस JSON में बदलेंगे.

java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro

इससे नीचे दी गई इमेज से मिलती-जुलती रिपोर्ट मिलती है. ये दोनों, एक ही डायरेक्ट्री में बनाई गई output.json रिपोर्ट के साथ हैं.

खास जानकारी वाली avro फ़ाइल को JSON में बदला गया

खास जानकारी वाली रिपोर्ट को देखने के लिए, JSON फ़ाइल को अपनी पसंद के एडिटर में खोलें.

3. एग्रीगेशन सेवा का डिप्लॉयमेंट

एग्रीगेशन सेवा को डिप्लॉय करने के लिए, नीचे दिया गया तरीका अपनाएं:

तीसरा चरण. एग्रीगेशन सेवा का डिप्लॉयमेंट: AWS पर एग्रीगेशन सेवा डिप्लॉय करें
चरण 3.1. एग्रीगेशन सेवा रिपॉज़िटरी का क्लोन बनाएं
चरण 3.2. पहले से बनी डिपेंडेंसी डाउनलोड करें
चरण 3.3. डेवलपमेंट एनवायरमेंट बनाएं
चरण 3.4. एग्रीगेशन सेवा डिप्लॉय करें

3.1. एग्रीगेशन सेवा रिपॉज़िटरी का क्लोन बनाएं

अपने लोकल एनवायरमेंट में, एग्रीगेशन सेवा GitHub रिपॉज़िटरी का क्लोन बनाएं.

git clone https://github.com/privacysandbox/aggregation-service.git

3.2. पहले से बनी डिपेंडेंसी डाउनलोड करना

एग्रीगेशन सेवा रिपॉज़िटरी का क्लोन बनाने के बाद, डेटा स्टोर करने की जगह केterraform फ़ोल्डर पर और उससे जुड़े क्लाउड फ़ोल्डर पर जाएं. अगर आपका cloud_provider AWS है, तो आप /terraform/aws पर जा सकते हैं

cd <repository_root>/terraform/aws

/terraform/aws में, download_prebuilt_dependencies.sh लागू करें.

bash download_prebuilt_dependencies.sh

3.3. डेवलपमेंट एनवायरमेंट बनाना

/terraform/aws/environments में डेव एनवायरमेंट बनाएं. dev नाम का फ़ोल्डर बनाएं.

mkdir dev

demo फ़ोल्डर के कॉन्टेंट को dev फ़ोल्डर में कॉपी करें.

cp -R demo/* dev

अपने dev फ़ोल्डर में ले जाएं.

cd dev

अपनी main.tf फ़ाइल को अपडेट करें और फ़ाइल में बदलाव करने के लिए, input का इस्तेमाल करने के लिए i दबाएं.

vim main.tf

लाल बॉक्स में मौजूद कोड को अनटिप्पणी करने के लिए, # को हटाएं. साथ ही, बकेट और कुंजी के नाम अपडेट करें.

AWS Main.tf के लिए:

AWS का मुख्य tffile

जिस कोड पर टिप्पणी नहीं की गई है वह कुछ ऐसा दिखना चाहिए.

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 पैरामीटर के साथ अपडेट करें, जो एग्रीगेशन सेवा के ऑनबोर्डिंग, एनवायरमेंट, और सूचना ईमेल के दौरान दिए गए थे.

डेवलपर ऑटो tfvarsfile में बदलाव करें

अपडेट हो जाने के बाद, esc -> :wq! दबाएं. इससे dev.auto.tfvars फ़ाइल सेव हो जाएगी और यह कुछ इस तरह की इमेज दिखेगी.

अपडेट किया गया डेवलपर ऑटो tfvarsfile

3.4. एग्रीगेशन सेवा डिप्लॉय करें

एग्रीगेशन सेवा को उसी फ़ोल्डर /terraform/aws/environments/dev में डिप्लॉय करने के लिए, टेरेस को शुरू करें.

terraform init

इस नतीजे से मिलने वाली वैल्यू, नीचे दी गई इमेज से मिलती-जुलती होनी चाहिए:

टेराफ़ॉर्मिनिट

टेराफ़ॉर्म के शुरू होने के बाद, टेराफ़ॉर्म इस्तेमाल करने का प्लान बनाएं. जहां यह जोड़े जाने वाले संसाधनों की संख्या और नीचे दी गई इमेज से मिलती-जुलती दूसरी जानकारी दिखाता है.

terraform plan

इसे "प्लान" की खास जानकारी में देखा जा सकता है. अगर यह हाल ही में किया गया डिप्लॉयमेंट है, तो आपको उन संसाधनों की संख्या दिखेगी जिन्हें बदलने के लिए शून्य जोड़ा जाएगा. वहीं, खत्म करने के लिए 0 जोड़ा जाएगा.

टेराफ़ॉर्मप्लान

यह प्रोसेस पूरी करने के बाद, Terraform का इस्तेमाल किया जा सकता है.

terraform apply

टेरेस पर कार्रवाइयां करने की पुष्टि करने के लिए पूछे जाने पर, वैल्यू में yes डालें.

टेराफ़ॉर्म आवेदनप्रॉम्प्ट

terraform apply के खत्म होने के बाद, createJob और getJob के लिए ये एंडपॉइंट दिखते हैं. आपको जिस frontend_api_id को सेक्शन 1.9 में पोस्टमैन में अपडेट करने की ज़रूरत है, उसे भी लौटाया जाता है.

टेराफ़ॉर्म अप्प्लिक

4. एग्रीगेशन सेवा का इनपुट बनाना

एग्रीगेशन सेवा में बैच बनाने के लिए, AVRO रिपोर्ट बनाएं.

चौथा चरण. एग्रीगेशन सेवा का इनपुट बनाना: एग्रीगेशन सेवा की ऐसी रिपोर्ट बनाएं जिन्हें एग्रीगेशन सेवा के लिए बैच बनाया गया हो.
चरण 4.1. ट्रिगर रिपोर्ट
चरण 4.2. एग्रीगेट की जा सकने वाली रिपोर्ट इकट्ठा करना
चरण 4.3. रिपोर्ट को AVRO में बदलें
चरण 4.4. आउटपुट डोमेन AVRO बनाएं

4.1. ट्रिगर रिपोर्ट

Privacy Sandbox डेमो साइट पर जाएं. यह एक निजी एग्रीगेशन रिपोर्ट ट्रिगर करता है. यह रिपोर्ट यहां देखी जा सकती है: chrome://private-aggregation-internals.

Chrome निजी एग्रीगेशन इंटरनल

अगर आपकी रिपोर्ट "मंज़ूरी बाकी है" स्टेटस में है, तो रिपोर्ट चुनें और "चुनी गई रिपोर्ट भेजें" पर क्लिक करें.

निजी एग्रीगेशन रिपोर्ट भेजें

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 में चिपकाएं और अपनी फ़ाइल सेव करें.

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 को कॉपी करें.

reportbody से क्लीयरटेक्स्ट पेलोड डीबग करें

goo.gle/ags-payload-decoder खोलें और अपने debug_cleartext_payload को "INPUT" बॉक्स में चिपकाएं और "डीकोड" पर क्लिक करें.

पेलोडडीकोडर

पेज बकेट की कुंजी का दशमलव मान दिखाता है. नीचे बकेट कुंजी का नमूना दिया गया है.

पेलोड डिकोडर रिज़ल्ट

अब हमारे पास बकेट कुंजी है, तो आगे बढ़ें और 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 को कॉपी करें और इसे पोस्टमैन ग्लोबल वैरिएबल frontend_api_id में डालें, जिसे आपने ज़रूरी सेक्शन 1.9 में सेट अप किया है.

पांचवां चरण. एग्रीगेशन सेवा का इस्तेमाल: खास जानकारी वाली रिपोर्ट बनाने और खास जानकारी की समीक्षा करने के लिए, एग्रीगेशन सेवा एपीआई का इस्तेमाल करें.
चरण 5.1. बैच बनाने के लिए, create Job एंडपॉइंट का इस्तेमाल करना
चरण 5.2. बैच का स्टेटस वापस पाने के लिए, get Job एंडपॉइंट का इस्तेमाल करना
चरण 5.3. खास जानकारी वाली रिपोर्ट की समीक्षा करना

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": "<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 रिस्पॉन्स मिलेगा. अन्य संभावित रिटर्न कोड एचटीटीपी रिस्पॉन्स कोड में मिल सकते हैं

पोस्टमैन Createनौकरी के अनुरोध की स्थिति

5.2. बैच का स्टेटस वापस पाने के लिए, getJob एंडपॉइंट का इस्तेमाल करना

जॉब अनुरोध की स्थिति देखने के लिए, getJob एंडपॉइंट का इस्तेमाल किया जा सकता है. "getJob" कलेक्शन में "getJob" को चुनें.

"Params" में, Job_request_id वैल्यू को createJob अनुरोध में भेजे गए job_request_id पर अपडेट करें.

पोस्टमैन get Jobrequest

getJob का नतीजा, आपके जॉब अनुरोध की स्थिति को एचटीटीपी स्टेटस के साथ 200 दिखाएगा. "Body" अनुरोध में job_status, return_message और error_messages (अगर काम में गड़बड़ी हुई है) जैसी ज़रूरी जानकारी शामिल है.

पोस्टमैन गेटजॉब अनुरोध की स्थिति

जनरेट की गई डेमो रिपोर्ट की रिपोर्टिंग साइट, आपके AWS आईडी पर शामिल की गई साइट से अलग है. इसलिए, आपको PRIVACY_BUDGET_AUTHORIZATION_ERRORreturn_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"
    },
    "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 अनुरोध में true के तौर पर debug_run शामिल है, तो आपको खास जानकारी की रिपोर्ट, output_data_blob_prefix में मौजूद डीबग फ़ोल्डर में मिल सकती है. रिपोर्ट AVRO फ़ॉर्मैट में है और इसे पिछले निर्देश का इस्तेमाल करके JSON में बदला जा सकता है.

इस रिपोर्ट में बकेट की, बिना नॉइज़ वाली मेट्रिक, और नॉइज़ की जानकारी होती है. इसे खास जानकारी वाली रिपोर्ट बनाने के लिए, नॉइज़ नहीं की गई मेट्रिक में जोड़ा जाता है. यह रिपोर्ट, नीचे दी गई इमेज जैसी है.

डीबग की खास जानकारी वाली रिपोर्ट

इन एनोटेशन में in_reports और in_domain भी शामिल हैं. इसका मतलब है कि:

  • in_reports - बकेट कुंजी, एग्रीगेट की जा सकने वाली रिपोर्ट के अंदर उपलब्ध होती है.
  • in_domain - बकेट कुंजी, आउटपुट_domain AVRO फ़ाइल के अंदर उपलब्ध होती है.