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 का इस्तेमाल करें.

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

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

"खाली फ़ाइल फ़ोल्डर" चुनें. इसके बाद, 'आगे बढ़ें' पर क्लिक करें और इसे "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 फ़ाइल का "रिपोर्ट का मुख्य हिस्सा" रखें . इस उदाहरण में, 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" में चिपकाएं बॉक्स में जाएं और "डिकोड करें" पर क्लिक करें.

payloaddecoder

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

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

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

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

terraforminit

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

terraform plan

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

terraformplan

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

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 फ़ाइल का "रिपोर्ट का मुख्य हिस्सा" रखें . इस उदाहरण में, 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 फ़ाइल बनाने के लिए, आपके पास बकेट की उन कुंजियों की ज़रूरत होगी जिन्हें रिपोर्ट से लिया जा सके.

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

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

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

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

payloaddecoder

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

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

अब हमारे पास बकेट कुंजी है, तो आगे बढ़ें और 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": "<bucket_name>",
  "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
  "output_data_bucket_name": "<bucket_name>",
  "job_parameters": {
    "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
    "output_domain_bucket_name": "<bucket_name>",
    "attribution_report_to": "<reporting origin of report>",
    "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

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

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

5.2. बैच का स्टेटस वापस पाने के लिए, 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",
        "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

5.3. खास जानकारी वाली रिपोर्ट की समीक्षा करना

अपने आउटपुट S3 बकेट में खास जानकारी वाली रिपोर्ट मिलने के बाद, इसे अपने लोकल एनवायरमेंट में डाउनलोड किया जा सकता है. खास जानकारी वाली रिपोर्ट AVRO फ़ॉर्मैट में होती हैं और इन्हें वापस JSON में बदला जा सकता है. अपनी रिपोर्ट पढ़ने के लिए, aggregatable_report_converter.jar का इस्तेमाल किया जा सकता है. इसके लिए, यहां दिए गए निर्देश का इस्तेमाल करें.

java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file <summary_report_avro>

इससे हर बकेट कुंजी की एग्रीगेट की गई वैल्यू का JSON मिलता है, जो नीचे दी गई इमेज से मिलता-जुलता है.

summaryreport

अगर आपके createJob अनुरोध में true के तौर पर debug_run शामिल है, तो आपको खास जानकारी की रिपोर्ट, output_data_blob_prefix में मौजूद डीबग फ़ोल्डर में मिल सकती है. रिपोर्ट AVRO फ़ॉर्मैट में है और इसे पिछले निर्देश का इस्तेमाल करके JSON में बदला जा सकता है.

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

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

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

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