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

AWS पर एग्रीगेशन सेवा का इस्तेमाल करना

इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी

subjectपिछली बार अप्रैल 3, 2025 को अपडेट किया गया
account_circleMaybelline Boon ने लिखा

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

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

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

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

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

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

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

`java --version` का इस्तेमाल करके, Java jre वर्शन की जांच करना.

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

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

Privacy Sandbox के डेमो GitHub रिपॉज़िटरी से, एग्रीगेट की जा सकने वाली रिपोर्ट कन्वर्टर की कॉपी डाउनलोड की जा सकती है.

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

अपने ब्राउज़र में, chrome://settings/adPrivacy पर जाएं और विज्ञापन निजता एपीआई को चालू करें.

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

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

तीसरे पक्ष की कुकी की Chrome सेटिंग.

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

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

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

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

Privacy Sandbox में रजिस्टर करने के लिए, Chrome फ़्लैग को बदलना.

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

एग्रीगेशन सेवा का इस्तेमाल करने के लिए, कोऑर्डिनेटर को इस सेवा में शामिल करना ज़रूरी है. अपनी रिपोर्टिंग साइट का पता, 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 (एग्रीगेशन सेवा)

इस कोडलैब में, एग्रीगेशन सेवा को डिप्लॉय करने के लिए Terraform का इस्तेमाल किया गया है. पक्का करें कि आपके स्थानीय एनवायरमेंट में Terraform बाइनरी इंस्टॉल हो.

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

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

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

पक्का करें कि Terraform, क्लासपाथ पर उपलब्ध हो.

terraform -v

1.9. Postman (एग्रीगेशन सेवा AWS के लिए)

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

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

postman workspace

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

पहले से कॉन्फ़िगर किए गए वर्कस्पेस की JSON कॉन्फ़िगरेशन और ग्लोबल एनवायरमेंट फ़ाइलें डाउनलोड करें.

"इंपोर्ट करें" बटन का इस्तेमाल करके, JSON फ़ाइलों को "मेरा Workspace" में इंपोर्ट करें.

Postman की JSON फ़ाइलें इंपोर्ट करें.

इससे, आपके लिए createJob और getJob एचटीटीपी अनुरोधों के साथ-साथ Privacy Sandbox कलेक्शन बन जाएगा.

Postman से इंपोर्ट किया गया कलेक्शन.

"एनवायरमेंट की झलक" की मदद से, AWS "ऐक्सेस कुंजी" और "सीक्रेट कुंजी" अपडेट करें.

Postman के एनवायरमेंट की झलक.

"बदलाव करें" पर क्लिक करें और "access_key" और "secret_key", दोनों की "मौजूदा वैल्यू" अपडेट करें. ध्यान दें कि frontend_api_id की जानकारी, इस दस्तावेज़ के सेक्शन 3.1.4 में दी जाएगी. हमारा सुझाव है कि आप us-east-1 क्षेत्र का इस्तेमाल करें. हालांकि, अगर आपको किसी दूसरे क्षेत्र में डिप्लॉय करना है, तो पक्का करें कि आपने रिलीज़ किए गए एएमआई को अपने खाते में कॉपी कर लिया हो या दी गई स्क्रिप्ट का इस्तेमाल करके, खुद से बनाए गए एएमआई का इस्तेमाल किया हो.

Postman के ग्लोबल वैरिएबल. Postman में ग्लोबल वैरिएबल में बदलाव करना.

2. लोकल टेस्टिंग कोडलैब

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

कोडलैब में शामिल होने का तरीका

दूसरा चरण. रिपोर्ट ट्रिगर करें: रिपोर्ट इकट्ठा करने के लिए, निजी एग्रीगेशन रिपोर्टिंग को ट्रिगर करें.

दूसरा चरण. डीबग करने के लिए एग्रीगेट की जा सकने वाली रिपोर्ट बनाना: इकट्ठा की गई JSON रिपोर्ट को AVRO फ़ॉर्मैट वाली रिपोर्ट में बदलें.
यह चरण उसी तरह का होगा जब विज्ञापन टेक्नोलॉजी एपीआई रिपोर्टिंग एंडपॉइंट से रिपोर्ट इकट्ठा करती हैं और JSON रिपोर्ट को AVRO फ़ॉर्मैट की रिपोर्ट में बदलती हैं.

दूसरा चरण. डीबग रिपोर्ट से बकेट कुंजी को पार्स करना: बकेट कुंजियों को विज्ञापन टेक्नोलॉजी विशेषज्ञ डिज़ाइन करते हैं. इस कोडलैब में, बकेट पहले से तय हैं. इसलिए, बकेट की कुंजियों को दिए गए तरीके से वापस पाएं.

दूसरा चरण. आउटपुट डोमेन AVRO फ़ाइल बनाएं: बकेट कुंजियां वापस पाने के बाद, आउटपुट डोमेन AVRO फ़ाइल बनाएं.

दूसरा चरण. लोकल टेस्टिंग टूल का इस्तेमाल करके समरी रिपोर्ट बनाना: लोकल एनवायरमेंट में समरी रिपोर्ट बनाने के लिए, लोकल टेस्टिंग टूल का इस्तेमाल करें.

दूसरा चरण. खास जानकारी वाली रिपोर्ट की समीक्षा करें: लोकल टेस्टिंग टूल से जनरेट की गई खास जानकारी वाली रिपोर्ट की समीक्षा करें.

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

Privacy Sandbox के डेमो वाली साइट पर जाएं. इससे निजी एग्रीगेशन रिपोर्ट ट्रिगर होती है. रिपोर्ट 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 को कॉपी करें.

रिपोर्ट के मुख्य हिस्से से क्लियरटेक्स्ट पेलोड को डीबग करें.

निजी एग्रीगेशन के लिए, डीबग पेलोड डिकोडर टूल खोलें. इसके बाद, "इनपुट" बॉक्स में अपना 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 बनाई जाती है.

स्थानीय जांच की खास जानकारी वाली रिपोर्ट की 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 में बदला गया.

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

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

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

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

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 की मुख्य 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 पैरामीटर से अपडेट करें.

dev auto tfvars फ़ाइल में बदलाव करें.

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

dev auto tfvars फ़ाइल को अपडेट किया गया.

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

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

terraform init

इससे आपको इस इमेज जैसा कुछ दिखना चाहिए:

Terraform init.

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

terraform plan

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

Terraform प्लान.

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

terraform apply

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

Terraform लागू करने का प्रॉम्प्ट.

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

Terraform लागू हो गया.

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

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

चौथा चरण. एग्रीगेशन सेवा के लिए इनपुट बनाना: एग्रीगेशन सेवा के लिए बैच में भेजी जाने वाली एग्रीगेशन सेवा रिपोर्ट बनाएं.
चौथा चरण. ट्रिगर रिपोर्ट
चौथा चरण. अलग-अलग डेटा को मिलाकर तैयार की जा सकने वाली रिपोर्ट इकट्ठा करना
चौथा चरण. रिपोर्ट को 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 फ़ाइल बनाने के लिए, आपको बकेट की ऐसी कुंजियां चाहिए जिन्हें रिपोर्ट से वापस पाया जा सके.

बकेट कुंजियों को विज्ञापन टेक्नोलॉजी से जुड़ी सेवा देने वाली कंपनी डिज़ाइन करती है. हालांकि, इस मामले में, साइट Privacy Sandbox डेमो बकेट कुंजियां बनाता है. इस साइट के लिए निजी एग्रीगेशन, डीबग मोड में है. इसलिए, बकेट कुंजी पाने के लिए, "रिपोर्ट बॉडी" से debug_cleartext_payload का इस्तेमाल किया जा सकता है.

अब रिपोर्ट के मुख्य हिस्से से debug_cleartext_payload को कॉपी करें.

रिपोर्ट के मुख्य हिस्से से क्लियरटेक्स्ट पेलोड को डीबग करें.

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

पेलोड डिकोडर.

यह पेज, बकेट की कुंजी की दशमलव वैल्यू दिखाता है. यहां बकेट की एक सैंपल कुंजी दी गई है.

पेलोड डिकोडर का नतीजा.

अब हमारे पास बकेट की कुंजी है, इसलिए 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 में सेट अप किया था.

पांचवां चरण. एग्रीगेशन सेवा का इस्तेमाल: खास जानकारी वाली रिपोर्ट बनाने और उनकी समीक्षा करने के लिए, एग्रीगेशन सेवा एपीआई का इस्तेमाल करें.
पांचवां चरण. एक साथ कई प्रोसेस करने के लिए, createJob एंडपॉइंट का इस्तेमाल करना
पांचवां चरण. बैच का स्टेटस पाने के लिए, getJob एंडपॉइंट का इस्तेमाल करना
पांचवां चरण. खास जानकारी वाली रिपोर्ट की समीक्षा करना

5.1. बैच में डेटा भेजने के लिए createJob एंडपॉइंट का इस्तेमाल करना

Postman में, "निजता सैंडबॉक्स" कलेक्शन खोलें और "createJob" चुनें.

अनुरोध पेलोड डालने के लिए, "बॉडी" चुनें और "रॉ" चुनें.

postman createJob request body

createJob पेलोड स्कीमा, github में उपलब्ध है. यह स्कीमा, यहां दिए गए स्कीमा से मिलता-जुलता है. <> को सही फ़ील्ड से बदलें.

{
   
"job_request_id": "<job_request_id>",
   
"input_data_blob_prefix": "<report_folder>/<report_name>.avro",
   
"input_data_blob_prefixes": [
     
"<report_folder>/<report_name-1>/",
     
"<report_folder>/<report_name-2>/",
     
"<report_folder>/<report_name>.avro"
   
], // Mutually exclusive to input_data_blob_prefix as of v2.11.0
   
"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>", // Mutually exclusive to attribution_report_to as of v2.7.0
     
"report_error_threshold_percentage": "10",
     
"debug_run": "true"
   
}
}

"भेजें" पर क्लिक करने के बाद, job_request_id के साथ नौकरी बन जाती है. एग्रीगेशन सेवा से अनुरोध स्वीकार होने के बाद, आपको एचटीटीपी 202 कोड वाला जवाब मिलना चाहिए. रिटर्न किए जाने वाले अन्य संभावित कोड, एचटीटीपी रिस्पॉन्स कोड में देखे जा सकते हैं

postman createJob request status

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

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

"पैरामीटर" में, job_request_id की वैल्यू को job_request_id पर अपडेट करें. यह वैल्यू, createJob अनुरोध में भेजी गई थी.

postman getJob request

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

ostman getJob request status

जनरेट की गई डेमो रिपोर्ट की रिपोर्टिंग साइट, आपके 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_blob_prefixes": [ // Mutually exclusive to input_data_blob_prefix as of v2.11.0
        "<report_folder>/<report_name-1>/",
        "<report_folder>/<report_name-2>/",
        "<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>", // Mutually exclusive to attribution_report_to 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 फ़ाइल में बकेट पासकोड उपलब्ध होता है.