১. পূর্বশর্তসমূহ
এই কোডল্যাবটি করার জন্য কয়েকটি পূর্বশর্ত প্রয়োজন। প্রতিটি শর্ত 'লোকাল টেস্টিং' নাকি 'অ্যাগ্রিগেশন সার্ভিস'-এর জন্য প্রয়োজন, সেই অনুযায়ী চিহ্নিত করা হয়েছে।
১.১. স্থানীয় টেস্টিং টুল (লোকাল টেস্টিং) ডাউনলোড করুন।
লোকাল টেস্টিং করার জন্য লোকাল টেস্টিং টুলটি ডাউনলোড করতে হবে। টুলটি এনক্রিপ্ট করা নয় এমন ডিবাগ রিপোর্টগুলো থেকে সারসংক্ষেপ রিপোর্ট তৈরি করবে।
লোকাল টেস্টিং টুলটি গিটহাবের ল্যাম্বডা জার আর্কাইভ থেকে ডাউনলোড করা যাবে। ফাইলটির নাম LocalTestingTool_{version}.jar হওয়া উচিত।
১.২. জাভা জেআরই (লোকাল টেস্টিং অ্যান্ড অ্যাগ্রিগেশন সার্ভিস) ইনস্টল করা আছে কিনা যাচাই করুন।
" টার্মিনাল " খুলুন এবং আপনার মেশিনে জাভা বা ওপেনজেডিকে ইনস্টল করা আছে কিনা তা পরীক্ষা করতে java --version ব্যবহার করুন।
`java --version` ব্যবহার করে জাভা জেআরই (Java JRE) ভার্সন যাচাই করা হচ্ছে।
যদি এটি ইনস্টল করা না থাকে, তাহলে আপনি জাভা সাইট অথবা ওপেনজেডিকে সাইট থেকে ডাউনলোড ও ইনস্টল করতে পারেন।
১.৩. সমষ্টিযোগ্য প্রতিবেদন রূপান্তরকারী ডাউনলোড করুন (স্থানীয় পরীক্ষা ও সমষ্টি পরিষেবা)
আপনি প্রাইভেসি স্যান্ডবক্স ডেমোস গিটহাব রিপোজিটরি থেকে অ্যাগ্রিগেটেবল রিপোর্ট কনভার্টারটির একটি কপি ডাউনলোড করতে পারেন।
১.৪. বিজ্ঞাপন গোপনীয়তা এপিআই সক্রিয় করুন (স্থানীয় পরীক্ষা এবং একত্রীকরণ পরিষেবা)
আপনার ব্রাউজারে chrome://settings/adPrivacy তে যান এবং সমস্ত Ad Privacy API সক্রিয় করুন।
তৃতীয় পক্ষের কুকি সক্রিয় আছে কিনা তা যাচাই করুন।
আপনার ব্রাউজারে chrome://settings/cookies -এ যান এবং " ইনকগনিটো মোডে থার্ড-পার্টি কুকি ব্লক করুন " বিকল্পটি নির্বাচন করুন।
তৃতীয় পক্ষের কুকি ক্রোম সেটিং।
১.৫. ওয়েব ও অ্যান্ড্রয়েড তালিকাভুক্তি (এগ্রিগেশন সার্ভিস)
প্রোডাকশন এনভায়রনমেন্টে প্রাইভেসি স্যান্ডবক্স এপিআই ব্যবহার করতে, নিশ্চিত করুন যে আপনি ক্রোম এবং অ্যান্ড্রয়েড উভয়ের জন্যই এনরোলমেন্ট এবং অ্যাটেস্টেশন সম্পন্ন করেছেন।
স্থানীয় পরীক্ষার জন্য, একটি ক্রোম ফ্ল্যাগ এবং সিএলআই সুইচ ব্যবহার করে তালিকাভুক্তি নিষ্ক্রিয় করা যেতে পারে।
আমাদের ডেমোর জন্য ক্রোম ফ্ল্যাগটি ব্যবহার করতে, chrome://flags/#privacy-sandbox-enrollment-overrides এ যান এবং আপনার সাইটের তথ্য দিয়ে ওভাররাইডটি আপডেট করুন। অথবা, আপনি যদি আমাদের ডেমো সাইট ব্যবহার করেন, তাহলে কোনো আপডেটের প্রয়োজন নেই।
গোপনীয়তা স্যান্ডবক্স তালিকাভুক্তি ওভাররাইড ক্রোম ফ্ল্যাগ।
১.৬. অ্যাগ্রিগেশন সার্ভিস অনবোর্ডিং (অ্যাগ্রিগেশন সার্ভিস)
অ্যাগ্রিগেশন সার্ভিস ব্যবহার করার জন্য কোঅর্ডিনেটরদের অনবোর্ডিং প্রয়োজন। আপনার রিপোর্টিং সাইটের ঠিকানা, AWS অ্যাকাউন্ট আইডি এবং অন্যান্য তথ্য দিয়ে অ্যাগ্রিগেশন সার্ভিস অনবোর্ডিং ফর্মটি পূরণ করুন।
১.৭. ক্লাউড প্রোভাইডার (অ্যাগ্রিগেশন সার্ভিস)
অ্যাগ্রিগেশন সার্ভিসের জন্য একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (Trusted Execution Environment) প্রয়োজন, যা একটি ক্লাউড এনভায়রনমেন্ট ব্যবহার করে। অ্যাগ্রিগেশন সার্ভিস অ্যামাজন ওয়েব সার্ভিসেস (AWS) এবং গুগল ক্লাউড (GCP)-এ সমর্থিত। এই কোডল্যাবটিতে শুধুমাত্র AWS ইন্টিগ্রেশন নিয়ে আলোচনা করা হবে।
AWS, Nitro Enclaves নামে একটি বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট (Trusted Execution Environment) প্রদান করে। আপনার একটি AWS অ্যাকাউন্ট আছে কিনা তা যাচাই করুন এবং আপনার AWS CLI এনভায়রনমেন্ট সেটআপ করার জন্য AWS CLI ইনস্টলেশন ও আপডেট নির্দেশাবলী অনুসরণ করুন।
আপনার AWS CLI নতুন হলে, আপনি CLI কনফিগারেশন নির্দেশাবলী ব্যবহার করে আপনার AWS CLI কনফিগার করতে পারেন।
১.৭.১. AWS S3 বাকেট তৈরি করুন
টেরাফর্ম স্টেট সংরক্ষণের জন্য একটি AWS S3 বাকেট এবং আপনার রিপোর্ট ও সামারি রিপোর্ট সংরক্ষণের জন্য আরেকটি S3 বাকেট তৈরি করুন। আপনি প্রদত্ত CLI কমান্ডটি ব্যবহার করতে পারেন। <> এর ভেতরের ফিল্ডগুলো উপযুক্ত ভেরিয়েবল দিয়ে প্রতিস্থাপন করুন।
aws s3api create-bucket --bucket <tf_bucket_name> --region us-east-1
aws s3api create-bucket --bucket <report_bucket_name> --region us-east-1
১.৭.২. ব্যবহারকারীর অ্যাক্সেস কী তৈরি করুন
AWS গাইড ব্যবহার করে ইউজার অ্যাক্সেস কী তৈরি করুন। এটি AWS-এ তৈরি করা createJob এবং getJob API এন্ডপয়েন্টগুলো কল করতে ব্যবহৃত হবে।
১.৭.৩. AWS ব্যবহারকারী এবং গ্রুপের অনুমতি
AWS-এ অ্যাগ্রিগেশন সার্ভিস ডেপ্লয় করতে, সার্ভিসটি ডেপ্লয় করার জন্য ব্যবহৃত ইউজারকে নির্দিষ্ট কিছু পারমিশন দিতে হবে। এই কোডল্যাবের জন্য, ডেপ্লয়মেন্টে সম্পূর্ণ পারমিশন নিশ্চিত করতে ইউজারের অ্যাডমিনিস্ট্রেটর অ্যাক্সেস আছে কিনা তা যাচাই করে নিন।
১.৮. টেরাফর্ম (অ্যাগ্রিগেশন সার্ভিস)
এই কোডল্যাবে অ্যাগ্রিগেশন সার্ভিস ডেপ্লয় করতে টেরাফর্ম ব্যবহার করা হয়েছে। নিশ্চিত করুন যে আপনার লোকাল এনভায়রনমেন্টে টেরাফর্ম বাইনারিটি ইনস্টল করা আছে।
আপনার স্থানীয় পরিবেশে Terraform বাইনারিটি ডাউনলোড করুন।
Terraform বাইনারিটি ডাউনলোড হয়ে গেলে, ফাইলটি এক্সট্র্যাক্ট করুন এবং Terraform বাইনারিটি /usr/local/bin ফোল্ডারে সরিয়ে নিন।
cp <directory>/terraform /usr/local/bin
Terraform ক্লাসপাথে উপলব্ধ আছে কিনা তা যাচাই করে দেখুন।
terraform -v
১.৯. পোস্টম্যান (AWS অ্যাগ্রিগেশন সার্ভিসের জন্য)
এই কোডল্যাবের জন্য রিকোয়েস্ট ম্যানেজমেন্টে পোস্টম্যান ব্যবহার করুন।
একটি ওয়ার্কস্পেস তৈরি করতে, উপরের নেভিগেশন আইটেম " Workspaces "-এ যান এবং " Create Workspace " নির্বাচন করুন।
পোস্টম্যান কর্মক্ষেত্র
' Blank workspace ' নির্বাচন করুন, 'next'-এ ক্লিক করুন এবং এর নাম দিন ' Privacy Sandbox '। ' Personal ' নির্বাচন করুন এবং ' Create'-এ ক্লিক করুন।
পূর্ব-কনফিগার করা ওয়ার্কস্পেস JSON কনফিগারেশন এবং গ্লোবাল এনভায়রনমেন্ট ফাইলগুলো ডাউনলোড করুন।
" ইম্পোর্ট " বোতামটি ব্যবহার করে JSON ফাইলগুলো " আমার ওয়ার্কস্পেস "-এ ইম্পোর্ট করুন।
পোস্টম্যান JSON ফাইলগুলো ইম্পোর্ট করুন।
এটি আপনার জন্য প্রাইভেসি স্যান্ডবক্স কালেকশনটি তৈরি করবে এবং এর সাথে createJob ও getJob HTTP রিকোয়েস্টগুলোও তৈরি করবে।
পোস্টম্যান সংগ্রহটি আমদানি করেছেন।
' এনভায়রনমেন্ট কুইক লুক' -এর মাধ্যমে AWS 'অ্যাক্সেস কী' এবং 'সিক্রেট কী' আপডেট করুন।
পোস্টম্যান পরিবেশের এক ঝলক।
" Edit "-এ ক্লিক করুন এবং " access_key " ও " secret_key " উভয়ের "Current Value" আপডেট করুন। মনে রাখবেন যে frontend_api_id এই ডকুমেন্টের ৩.১.৪ সেকশনে দেওয়া হবে। এবং আমরা us-east-1 রিজিয়ন ব্যবহার করার পরামর্শ দিই। তবে, আপনি যদি অন্য কোনো রিজিয়নে ডেপ্লয় করতে চান, তাহলে নিশ্চিত করুন যে আপনি রিলিজ করা AMI-টি আপনার অ্যাকাউন্টে কপি করেছেন অথবা প্রদত্ত স্ক্রিপ্ট ব্যবহার করে একটি সেলফ-বিল্ড সম্পন্ন করেছেন।
পোস্টম্যান গ্লোবাল ভেরিয়েবল।
পোস্টম্যানে গ্লোবাল ভেরিয়েবল সম্পাদনা করুন।
২. স্থানীয় টেস্টিং কোডল্যাব
আপনি আপনার মেশিনের স্থানীয় টেস্টিং টুল ব্যবহার করে এনক্রিপ্টবিহীন ডিবাগ রিপোর্টগুলোর সাহায্যে অ্যাগ্রিগেশন সম্পাদন করতে এবং সারসংক্ষেপ রিপোর্ট তৈরি করতে পারেন।
কোডল্যাব ধাপসমূহ
ধাপ ২.১. রিপোর্ট ট্রিগার করুন : রিপোর্টটি সংগ্রহ করতে প্রাইভেট অ্যাগ্রিগেশন রিপোর্টিং ট্রিগার করুন।
ধাপ ২.২. ডিবাগ অ্যাগ্রিগেটেবল রিপোর্ট তৈরি করুন : সংগৃহীত JSON রিপোর্টটিকে একটি AVRO ফরম্যাটের রিপোর্টে রূপান্তর করুন।
এই ধাপটি অনেকটা সেই সময়ের মতো হবে, যখন অ্যাড টেকরা API রিপোর্টিং এন্ডপয়েন্ট থেকে রিপোর্ট সংগ্রহ করে JSON রিপোর্টগুলোকে AVRO ফরম্যাটের রিপোর্টে রূপান্তর করেন।
ধাপ ২.৩. ডিবাগ রিপোর্ট থেকে বাকেট কী পার্স করুন : বাকেট কীগুলো অ্যাড টেকদের দ্বারা ডিজাইন করা হয়। এই কোডল্যাবে, যেহেতু বাকেটগুলো পূর্বনির্ধারিত, তাই প্রদত্ত বাকেট কীগুলো সংগ্রহ করুন।
ধাপ ২.৪. আউটপুট ডোমেইন AVRO তৈরি করুন : বাকেট কীগুলো সংগ্রহ করা হয়ে গেলে, আউটপুট ডোমেইন AVRO ফাইলটি তৈরি করুন।
ধাপ ২.৫. লোকাল টেস্টিং টুল ব্যবহার করে সামারি রিপোর্ট তৈরি করুন : লোকাল এনভায়রনমেন্টে সামারি রিপোর্ট তৈরি করার জন্য লোকাল টেস্টিং টুল ব্যবহার করুন।
ধাপ ২.৬. সারাংশ প্রতিবেদনটি পর্যালোচনা করুন : স্থানীয় টেস্টিং টুল দ্বারা তৈরি সারাংশ প্রতিবেদনটি পর্যালোচনা করুন।
২.১. ট্রিগার রিপোর্ট
প্রাইভেসি স্যান্ডবক্স ডেমো সাইটে যান। এটি একটি প্রাইভেট অ্যাগ্রিগেশন রিপোর্ট চালু করবে। আপনি chrome://private-aggregation-internals -এ রিপোর্টটি দেখতে পারবেন।
ক্রোম প্রাইভেট অ্যাগ্রিগেশন ইন্টারনালস।
আপনার রিপোর্টটি " পেন্ডিং " অবস্থায় থাকলে, আপনি রিপোর্টটি নির্বাচন করে " সেন্ড সিলেক্টেড রিপোর্টস " এ ক্লিক করতে পারেন।
ব্যক্তিগত সমষ্টিগত প্রতিবেদন পাঠান।
২.২. ডিবাগ সমষ্টিগত প্রতিবেদন তৈরি করুন
chrome://private-aggregation-internals , [reporting-origin]/.well-known/private-aggregation/report-shared-storage এন্ডপয়েন্ট থেকে প্রাপ্ত " Report Body " কপি করুন।
নিশ্চিত করুন যে " রিপোর্ট বডি "-তে 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
২.৩. ডিবাগ রিপোর্ট থেকে বাকেট কী পার্স করুন
ব্যাচিং করার সময় অ্যাগ্রিগেশন সার্ভিসের দুটি ফাইলের প্রয়োজন হয়। অ্যাগ্রিগেটেবল রিপোর্ট এবং আউটপুট ডোমেইন ফাইল। আউটপুট ডোমেইন ফাইলে সেই কী-গুলো থাকে যা আপনি অ্যাগ্রিগেটেবল রিপোর্টগুলো থেকে পুনরুদ্ধার করতে চান। output_domain.avro ফাইলটি তৈরি করার জন্য, আপনার সেই বাকেট কী-গুলো প্রয়োজন হবে যা রিপোর্টগুলো থেকে পুনরুদ্ধার করা যায়।
বাকেট কীগুলো এপিআই-এর কলার দ্বারা ডিজাইন করা হয়, এবং ডেমোটিতে আগে থেকে তৈরি করা উদাহরণ বাকেট কী রয়েছে। যেহেতু ডেমোটি প্রাইভেট অ্যাগ্রিগেশনের জন্য ডিবাগ মোড চালু করেছে, আপনি বাকেট কী পুনরুদ্ধার করার জন্য " রিপোর্ট বডি " থেকে ডিবাগ ক্লিয়ারটেক্সট পেলোড পার্স করতে পারেন। তবে, এই ক্ষেত্রে, সাইট প্রাইভেসি স্যান্ডবক্স ডেমোটি বাকেট কীগুলো তৈরি করে। যেহেতু এই সাইটের জন্য প্রাইভেট অ্যাগ্রিগেশন ডিবাগ মোডে আছে, আপনি বাকেট কী পেতে " রিপোর্ট বডি " থেকে debug_cleartext_payload ব্যবহার করতে পারেন।
রিপোর্ট বডি থেকে debug_cleartext_payload কপি করুন।
রিপোর্ট বডি থেকে ক্লিয়ারটেক্সট পেলোড ডিবাগ করুন।
প্রাইভেট অ্যাগ্রিগেশন টুলের জন্য ডিবাগ পেলোড ডিকোডারটি খুলুন এবং আপনার debug_cleartext_payload " INPUT " বক্সে পেস্ট করে " Decode " বোতামে ক্লিক করুন।
পেলোড ডিকোডার।
পৃষ্ঠাটি বাকেট কী-এর দশমিক মান ফেরত দেয়। নিচে একটি নমুনা বাকেট কী দেওয়া হলো।
পেলোড ডিকোডারের ফলাফল।
২.৪. আউটপুট ডোমেইন AVRO তৈরি করুন
এখন যেহেতু আমাদের কাছে বাকেট কী আছে, সেটির দশমিক মানটি কপি করুন। এরপর বাকেট কী ব্যবহার করে output_domain.avro তৈরি করুন। যাচাই করুন যে আপনি প্রতিস্থাপন করেছেন। আপনার উদ্ধার করা বাকেট কী দিয়ে।
java -jar aggregatable_report_converter.jar \
--request_type createDomainAvro \
--bucket_key <bucket key>
এই স্ক্রিপ্টটি আপনার বর্তমান ফোল্ডারে output_domain.avro .avro ফাইলটি তৈরি করে।
২.৫. লোকাল টেস্টিং টুল ব্যবহার করে সারসংক্ষেপ প্রতিবেদন তৈরি করুন।
আমরা সামারি রিপোর্টগুলো তৈরি করার জন্য সেকশন ১.১-এ ডাউনলোড করা 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 নামে একটি রিপোর্ট তৈরি হয়।
স্থানীয় পরীক্ষার সারাংশ প্রতিবেদনের অ্যাভ্রো ফাইল।
২.৬. সারসংক্ষেপ প্রতিবেদনটি পর্যালোচনা করুন।
যে সামারি রিপোর্টটি তৈরি হয়, তা AVRO ফরম্যাটে থাকে। এটি পড়ার জন্য, আপনাকে এটিকে AVRO থেকে JSON ফরম্যাটে রূপান্তর করতে হবে। আদর্শগতভাবে, অ্যাড টেক টিমেরই AVRO রিপোর্টগুলোকে পুনরায় JSON-এ রূপান্তর করার জন্য কোড লেখা উচিত।
আমাদের কোডল্যাবের জন্য, আমরা AVRO রিপোর্টকে পুনরায় JSON-এ রূপান্তর করতে প্রদত্ত aggregatable_report_converter.jar টুলটি ব্যবহার করব।
java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro
এটি নিচের ছবির মতো একটি রিপোর্ট প্রদান করে। এর সাথে একই ডিরেক্টরিতে একটি output.json ফাইলও তৈরি হয়।
অ্যাভ্রো ফাইলের সারসংক্ষেপ json-এ রূপান্তর করা হয়েছে।
সারাংশ প্রতিবেদনটি পর্যালোচনা করতে আপনার পছন্দের কোনো এডিটরে JSON ফাইলটি খুলুন।
৩. অ্যাগ্রিগেশন সার্ভিস ডেপ্লয়মেন্ট
অ্যাগ্রিগেশন সার্ভিস ডিপ্লয় করতে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
ধাপ ৩. অ্যাগ্রিগেশন সার্ভিস ডেপ্লয়মেন্ট : AWS-এ অ্যাগ্রিগেশন সার্ভিস ডেপ্লয় করুন।
ধাপ ৩.১. অ্যাগ্রিগেশন সার্ভিস রিপোজিটরি ক্লোন করুন
ধাপ ৩.২. আগে থেকে তৈরি করা নির্ভরতাগুলো ডাউনলোড করুন
ধাপ ৩.৩. একটি ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি করুন।
ধাপ ৩.৪. অ্যাগ্রিগেশন সার্ভিস স্থাপন করুন
৩.১. অ্যাগ্রিগেশন সার্ভিস রিপোজিটরি ক্লোন করুন
আপনার স্থানীয় পরিবেশে অ্যাগ্রিগেশন সার্ভিস গিটহাব রিপোজিটরিটি ক্লোন করুন।
git clone https://github.com/privacysandbox/aggregation-service.git
৩.২. আগে থেকে তৈরি নির্ভরতাগুলি ডাউনলোড করুন
একবার আপনি অ্যাগ্রিগেশন সার্ভিস রিপোজিটরিটি ক্লোন করে নিলে, রিপোজিটরিটির টেরাফর্ম ফোল্ডারে এবং সংশ্লিষ্ট ক্লাউড ফোল্ডারে যান। যদি আপনার ক্লাউড_প্রোভাইডার AWS হয়, তাহলে আপনি এগিয়ে যেতে পারেন।
cd <repository_root>/terraform/aws
ভিতরে , download_prebuilt_dependencies.sh ফাইলটি চালান।
bash download_prebuilt_dependencies.sh
৩.৩. একটি উন্নয়ন পরিবেশ তৈরি করুন
একটি ডেভ এনভায়রনমেন্ট তৈরি করুন . 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 ফাইলটি আপডেট করা হয়েছে।
৩.৪. অ্যাগ্রিগেশন সার্ভিস স্থাপন করুন
অ্যাগ্রিগেশন সার্ভিস স্থাপন করতে, একই ফোল্ডারে , টেরাফর্ম চালু করুন।
terraform init
এর ফলে নিচের ছবির মতো কিছু একটা পাওয়া যাবে:
টেরাফর্ম ইনিট।
টেরাফর্ম ইনিশিয়ালাইজ হয়ে গেলে, টেরাফর্ম এক্সিকিউশন প্ল্যান তৈরি করুন। যেখানে এটি নিচের ছবির মতো করে যোগ করার জন্য রিসোর্সের সংখ্যা এবং অন্যান্য অতিরিক্ত তথ্য রিটার্ন করবে।
terraform plan
আপনি নিচে " প্ল্যান " সারাংশটি দেখতে পাবেন। যদি এটি একটি নতুন ডেপ্লয়মেন্ট হয়, তাহলে আপনি যোগ করা রিসোর্সের সংখ্যা দেখতে পাবেন, যেখানে পরিবর্তনের জন্য ০টি এবং ধ্বংস করার জন্য ০টি থাকবে।
টেরাফর্ম পরিকল্পনা।
এটি সম্পন্ন করার পর, আপনি টেরাফর্ম প্রয়োগ করতে পারবেন।
terraform apply
Terraform যখন কাজগুলো করার জন্য নিশ্চিত করতে বলবে, তখন নির্দিষ্ট স্থানে ' yes লিখুন।
টেরাফর্ম অ্যাপ্লাই প্রম্পট।
একবার terraform apply শেষ হলে, createJob এবং getJob এর জন্য নিম্নলিখিত এন্ডপয়েন্টগুলো ফেরত আসে। ` frontend_api_id টিও ফেরত আসে, যা আপনাকে ১.৯ অনুচ্ছেদে ` Postman`-এ আপডেট করতে হবে।
টেরাফর্ম প্রয়োগ সম্পন্ন হয়েছে।
৪. অ্যাগ্রিগেশন সার্ভিস ইনপুট তৈরি
অ্যাগ্রিগেশন সার্ভিসে ব্যাচিংয়ের জন্য অ্যাভ্রো রিপোর্টগুলো তৈরি করতে অগ্রসর হোন।
ধাপ ৪. অ্যাগ্রিগেশন সার্ভিস ইনপুট তৈরি : অ্যাগ্রিগেশন সার্ভিসের জন্য ব্যাচ করা হয় এমন অ্যাগ্রিগেশন সার্ভিস রিপোর্টগুলো তৈরি করুন।
ধাপ ৪.১. রিপোর্ট ট্রিগার করুন
ধাপ ৪.২. সমষ্টিগত প্রতিবেদন সংগ্রহ করুন
ধাপ ৪.৩. রিপোর্টগুলোকে AVRO-তে রূপান্তর করুন।
ধাপ ৪.৪. আউটপুট ডোমেইন AVRO তৈরি করুন
৪.১. ট্রিগার রিপোর্ট
প্রাইভেসি স্যান্ডবক্স ডেমো সাইটে যান। এটি একটি প্রাইভেট অ্যাগ্রিগেশন রিপোর্ট চালু করবে। আপনি chrome://private-aggregation-internals -এ রিপোর্টটি দেখতে পারবেন।
ক্রোম প্রাইভেট অ্যাগ্রিগেশন ইন্টারনালস।
আপনার রিপোর্টটি " পেন্ডিং " অবস্থায় থাকলে, আপনি রিপোর্টটি নির্বাচন করে " সেন্ড সিলেক্টেড রিপোর্টস " এ ক্লিক করতে পারেন।
ব্যক্তিগত সমষ্টিগত প্রতিবেদন পাঠান।
৪.২. সমষ্টিগত প্রতিবেদন সংগ্রহ করুন
আপনার সংশ্লিষ্ট API-এর .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 এন্ডপয়েন্ট থেকে প্রাপ্ত " Report Body " কপি করুন।
নিশ্চিত করুন যে " রিপোর্ট বডি "-তে aggregation_coordinator_origin মধ্যে https://publickeyservice.msmt.aws.privacysandboxservices.com রয়েছে, যার অর্থ রিপোর্টটি একটি AWS অ্যাগ্রিগেটেবল রিপোর্ট।
ব্যক্তিগত একত্রীকরণ প্রতিবেদন।
" রিপোর্ট বডি " JSON-টি একটি JSON ফাইলে রাখুন। এই উদাহরণে, আপনি vim ব্যবহার করতে পারেন। কিন্তু আপনি আপনার পছন্দমতো যেকোনো টেক্সট এডিটর ব্যবহার করতে পারেন।
vim report.json
রিপোর্টটি report.json ফাইলে পেস্ট করুন এবং ফাইলটি সেভ করুন।
রিপোর্ট JSON ফাইল।
৪.৩. রিপোর্টগুলোকে 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
৪.৪. আউটপুট ডোমেইন AVRO তৈরি করুন
output_domain.avro ফাইলটি তৈরি করার জন্য আপনার বাকেট কী-গুলোর প্রয়োজন হবে, যা রিপোর্টগুলো থেকে সংগ্রহ করা যায়।
বাকেট কীগুলো অ্যাড টেক দ্বারা ডিজাইন করা হয়। তবে, এক্ষেত্রে সাইটের প্রাইভেসি স্যান্ডবক্স ডেমোটি বাকেট কীগুলো তৈরি করে। যেহেতু এই সাইটের প্রাইভেট অ্যাগ্রিগেশন ডিবাগ মোডে আছে, তাই বাকেট কী পেতে আপনি " রিপোর্ট বডি " থেকে debug_cleartext_payload ব্যবহার করতে পারেন।
রিপোর্ট বডি থেকে debug_cleartext_payload টি কপি করে নিন।
রিপোর্ট বডি থেকে ক্লিয়ারটেক্সট পেলোড ডিবাগ করুন।
goo.gle/ags-payload-decoder খুলুন এবং আপনার debug_cleartext_payload " INPUT " বক্সে পেস্ট করে " Decode " বাটনে ক্লিক করুন।
পেলোড ডিকোডার।
পৃষ্ঠাটি বাকেট কী-এর দশমিক মান ফেরত দেয়। নিচে একটি নমুনা বাকেট কী দেওয়া হলো।
পেলোড ডিকোডারের ফলাফল।
এখন যেহেতু আমাদের কাছে বাকেট কী আছে, output_domain.avro .avro তৈরি করুন। যাচাই করুন যে আপনি প্রতিস্থাপন করেছেন। আপনার উদ্ধার করা বাকেট কী দিয়ে।
java -jar aggregatable_report_converter.jar \
--request_type createDomainAvro \
--bucket_key <bucket key>
এই স্ক্রিপ্টটি আপনার বর্তমান ফোল্ডারে output_domain.avro .avro ফাইলটি তৈরি করে।
৪.৫. রিপোর্টগুলো AWS বাকেটে স্থানান্তর করুন
একবার AVRO রিপোর্টগুলো (অনুচ্ছেদ ৩.২.৩ থেকে) এবং আউটপুট ডোমেইন (অনুচ্ছেদ ৩.২.৪ থেকে) তৈরি হয়ে গেলে, রিপোর্ট এবং আউটপুট ডোমেইনটিকে রিপোর্টিং 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>/
৫. অ্যাগ্রিগেশন সার্ভিস ব্যবহার
terraform apply থেকে আপনাকে ` create_job_endpoint , get_job_endpoint এবং frontend_api_id রিটার্ন করা হয়। frontend_api_id টি কপি করে `postman`-এর frontend_api_id গ্লোবাল ভ্যারিয়েবলে রাখুন, যা আপনি পূর্বশর্ত সেকশন ১.৯-এ সেটআপ করেছিলেন।
ধাপ ৫. অ্যাগ্রিগেশন সার্ভিস ব্যবহার : সামারি রিপোর্ট তৈরি করতে এবং সামারি রিপোর্টগুলো পর্যালোচনা করতে অ্যাগ্রিগেশন সার্ভিস এপিআই ব্যবহার করুন।
ধাপ ৫.১. ব্যাচ করার জন্য createJob এন্ডপয়েন্ট ব্যবহার করা
ধাপ ৫.২. getJob এন্ডপয়েন্ট ব্যবহার করে ব্যাচের অবস্থা জানা
ধাপ ৫.৩. সারসংক্ষেপ প্রতিবেদন পর্যালোচনা করা
৫.১. ব্যাচ করার জন্য createJob এন্ডপয়েন্ট ব্যবহার
Postman-এ, ' Privacy Sandbox ' কালেকশনটি খুলুন এবং ' createJob ' নির্বাচন করুন।
আপনার অনুরোধ পেলোড স্থাপন করতে " Body " এবং " raw " নির্বাচন করুন।
পোস্টম্যানে জব তৈরি করার অনুরোধের মূল অংশ
createJob পেলোড স্কিমাটি গিটহাবে পাওয়া যায় এবং এটি দেখতে নিচের মতো। <> চিহ্নগুলোকে উপযুক্ত ফিল্ড দিয়ে প্রতিস্থাপন করুন।
{
"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"
}
}
আপনি " Send " এ ক্লিক করার সাথে সাথে job_request_id সহ জবটি তৈরি হয়ে যাবে। অ্যাগ্রিগেশন সার্ভিস দ্বারা অনুরোধটি গৃহীত হলে আপনি একটি HTTP 202 রেসপন্স পাবেন। অন্যান্য সম্ভাব্য রিটার্ন কোড HTTP response codes অংশে পাওয়া যাবে।
পোস্টম্যানে জব তৈরি করার অনুরোধের অবস্থা
৫.২. getJob এন্ডপয়েন্ট ব্যবহার করে ব্যাচের অবস্থা জানা
জব রিকোয়েস্টের স্ট্যাটাস চেক করতে, আপনি getJob এন্ডপয়েন্টটি ব্যবহার করতে পারেন। ' Privacy Sandbox ' কালেকশন থেকে ' getJob ' সিলেক্ট করুন।
" Params " অংশে, `job_request_id` ভ্যালুটি ` createJob রিকোয়েস্টে পাঠানো job_request_id দিয়ে আপডেট করুন।
পোস্টম্যান গেটজব অনুরোধ
getJob এর ফলাফলে আপনার জব রিকোয়েস্টের স্ট্যাটাসটি একটি HTTP স্ট্যাটাস 200 সহ ফেরত আসা উচিত। রিকোয়েস্টের " Body "-তে job_status , return_message এবং error_messages মতো প্রয়োজনীয় তথ্য থাকে (যদি জবটিতে কোনো ত্রুটি ঘটে থাকে)।
পোস্টম্যান গেটজব অনুরোধের অবস্থা
যেহেতু তৈরি করা ডেমো রিপোর্টের রিপোর্টিং সাইটটি আপনার AWS ID-তে অনবোর্ড করা সাইট থেকে ভিন্ন, তাই আপনি PRIVACY_BUDGET_AUTHORIZATION_ERROR রিটার্ন কোড সহ একটি প্রতিক্রিয়া পেতে পারেন। এটি স্বাভাবিক, কারণ রিপোর্টটির রিপোর্টিং অরিজিনের সাইটটি AWS ID-এর জন্য অনবোর্ড করা রিপোর্টিং সাইটের সাথে মেলে না।
{
"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"
}
৫.৩. সারসংক্ষেপ প্রতিবেদন পর্যালোচনা
আপনার আউটপুট 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 এ অবস্থিত `debug` ফোল্ডারে পাবেন। প্রতিবেদনটি AVRO ফরম্যাটে থাকে এবং পূর্ববর্তী কমান্ডটি ব্যবহার করে এটিকে JSON-এ রূপান্তর করা যায়।
রিপোর্টটিতে বাকেট কী, নয়েজ-মুক্ত মেট্রিক এবং সারসংক্ষেপ রিপোর্টটি তৈরি করার জন্য নয়েজ-মুক্ত মেট্রিকের সাথে যোগ করা নয়েজ অন্তর্ভুক্ত থাকে। রিপোর্টটি নিম্নলিখিত ছবির অনুরূপ।
ডিবাগ সারাংশ প্রতিবেদন।
টীকাগুলিতে in_reports এবং in_domain ও রয়েছে, যার অর্থ:
- in_reports - এই বাকেট কী-টি অ্যাগ্রিগেটেবল রিপোর্টগুলোর ভেতরে পাওয়া যায়।
- in_domain - বাকেট কী-টি output_domain AVRO ফাইলের ভিতরে পাওয়া যায়।