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

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

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

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

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

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

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

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

java का उपयोग करके java jre वर्शन की जांच कर रहे हैं\n--वर्शन

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

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

प्राइवसी सैंडबॉक्स डेमोज़ GitHub रिपॉज़िटरी से, इकट्ठा की जा सकने वाली रिपोर्ट कन्वर्टर की कॉपी डाउनलोड की जा सकती है.

1.4. प्राइवसी सैंडबॉक्स के एपीआई (लोकल टेस्टिंग और एग्रीगेशन सेवा) को चालू करें

अपने ब्राउज़र में, chrome://flags/#privacy-sandbox-ads-apis पर जाएं और प्राइवसी सैंडबॉक्स एपीआई को चालू करें.

प्राइवसी सैंडबॉक्स chromeflag

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

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

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

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 से एक भरोसेमंद एक्ज़ीक्यूशन एनवायरमेंट मिलता है, जिसे 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 फ़ाइलों को "मेरा फ़ाइल फ़ोल्डर" में इंपोर्ट करें.

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

रिपोर्ट JSONfile

इसके बाद, अपने रिपोर्ट फ़ोल्डर पर जाएं और 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 को कॉपी करें.

reportbody से cleartext पेलोड डीबग करें

प्राइवेट एग्रीगेशन के लिए डीबग पेलोड डिकोडर टूल को खोलें और अपने 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 रिपोर्ट भी बनाई गई है.

खास जानकारी avro फ़ाइल को 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 है, तो आप /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 फ़ाइल अपडेट करें और फ़ाइल में बदलाव करने के लिए, i दबाएं. input

vim main.tf

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

AWS private.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 पैरामीटर के साथ इमेज के बाद, लाल बॉक्स में दिए गए फ़ील्ड अपडेट करें.

Dev Auto tfvarsfile में बदलाव करें

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

अपडेट किया गया Dev Auto tfvarsfile

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

एग्रीगेशन सेवा को डिप्लॉय करने के लिए, उसी फ़ोल्डर /terraform/aws/environments/dev में, 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 पर रिपोर्ट देख सकते हैं.

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

रिपोर्ट JSONfile

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 से cleartext पेलोड डीबग करें

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 अनुरोध में भेजा गया था.

पोस्टमैन get Jobrequest

getJob के नतीजे से, नौकरी के अनुरोध की स्थिति को 200 के एचटीटीपी स्टेटस के साथ दिखाया जाना चाहिए. "मुख्य हिस्सा" अनुरोध में 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-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 फ़ाइल के अंदर उपलब्ध होती है.