Google ক্লাউড প্ল্যাটফর্মে (GCP) এগ্রিগেশন সার্ভিসের সাথে কাজ করুন

1. 1. পূর্বশর্ত

সম্পূর্ণ করার আনুমানিক সময়: 1-2 ঘন্টা

এই কোডল্যাবটি সম্পাদন করার জন্য 2টি মোড রয়েছে: স্থানীয় পরীক্ষা বা সমষ্টি পরিষেবা । স্থানীয় টেস্টিং মোডের জন্য একটি স্থানীয় মেশিন এবং ক্রোম ব্রাউজার প্রয়োজন (কোন Google ক্লাউড সংস্থান তৈরি/ব্যবহার নেই)। অ্যাগ্রিগেশন সার্ভিস মোডের জন্য Google ক্লাউডে অ্যাগ্রিগেশন সার্ভিসের সম্পূর্ণ স্থাপনা প্রয়োজন।

উভয় মোডে এই কোডল্যাব সম্পাদন করতে, কয়েকটি পূর্বশর্ত প্রয়োজন। প্রতিটি প্রয়োজনীয়তা স্থানীয় পরীক্ষা বা সমষ্টি পরিষেবার জন্য প্রয়োজনীয় কিনা তা সেই অনুযায়ী চিহ্নিত করা হয়।

1.1। সম্পূর্ণ তালিকাভুক্তি এবং প্রত্যয়ন (একত্রীকরণ পরিষেবা)

গোপনীয়তা স্যান্ডবক্স API ব্যবহার করতে, নিশ্চিত করুন যে আপনি ক্রোম এবং অ্যান্ড্রয়েড উভয়ের জন্য তালিকাভুক্তি এবং প্রত্যয়ন সম্পন্ন করেছেন৷

1.2। গোপনীয়তা স্যান্ডবক্স এপিআই সক্ষম করুন (স্থানীয় পরীক্ষা এবং সমষ্টি পরিষেবা)

যেহেতু আমরা গোপনীয়তা স্যান্ডবক্স ব্যবহার করব, তাই আমরা আপনাকে গোপনীয়তা স্যান্ডবক্স বিজ্ঞাপন APIগুলি সক্ষম করতে উত্সাহিত করি৷

আপনার ব্রাউজারে, chrome://flags/#privacy-sandbox-ads-apis এ যান এবং গোপনীয়তা স্যান্ডবক্স API সক্ষম করুন৷

গোপনীয়তা স্যান্ডবক্স API সক্রিয় করা হচ্ছে

এছাড়াও নিশ্চিত করুন যে আপনার 3য় পক্ষের কুকিজ সক্রিয় আছে

আপনার ব্রাউজারে, chrome://settings/cookies এ যান। নিশ্চিত করুন যে তৃতীয় পক্ষের কুকিজ ব্লক করা হচ্ছে না। আপনার Chrome সংস্করণের উপর নির্ভর করে, আপনি এই সেটিংস মেনুতে বিভিন্ন বিকল্প দেখতে পারেন, তবে গ্রহণযোগ্য কনফিগারেশনগুলির মধ্যে রয়েছে:

  • "সব তৃতীয় পক্ষের কুকি ব্লক করুন" = অক্ষম৷
  • "থার্ড-পার্টি কুকিজ ব্লক করুন" = অক্ষম
  • "ছদ্মবেশী মোডে তৃতীয় পক্ষের কুকিগুলিকে ব্লক করুন" = সক্ষম৷

কুকিজ সক্রিয় করা হচ্ছে

1.3। স্থানীয় টেস্টিং টুল ডাউনলোড করুন (স্থানীয় পরীক্ষা)

স্থানীয় পরীক্ষার জন্য স্থানীয় টেস্টিং টুল ডাউনলোড করতে হবে। টুলটি এনক্রিপ্ট না করা ডিবাগ রিপোর্ট থেকে সারাংশ রিপোর্ট তৈরি করবে।

GitHub-এ ক্লাউড ফাংশন JAR আর্কাইভে ডাউনলোডের জন্য স্থানীয় টেস্টিং টুল উপলব্ধ। এটিকে LocalTestingTool_{version}.jar হিসাবে নামকরণ করা উচিত।

1.4। JAVA JRE ইনস্টল করা আছে তা নিশ্চিত করুন (স্থানীয় পরীক্ষা এবং সমষ্টি পরিষেবা)

"টার্মিনাল" খুলুন এবং আপনার মেশিনে জাভা বা openJDK ইনস্টল আছে কিনা তা পরীক্ষা করতে java --version ব্যবহার করুন।

জাভা সংস্করণ পরীক্ষা করুন

এটি ইনস্টল করা না থাকলে, আপনি Java সাইট বা openJDK সাইট থেকে ডাউনলোড এবং ইনস্টল করতে পারেন।

1.5। aggregatable_report_converter ডাউনলোড করুন (স্থানীয় পরীক্ষা এবং সমষ্টি পরিষেবা)

আপনি গোপনীয়তা স্যান্ডবক্স ডেমো গিটহাব রিপোজিটরি থেকে aggregatable_report_converter-এর একটি অনুলিপি ডাউনলোড করতে পারেন।

1.6। একটি GCP পরিবেশ সেট আপ করুন (একত্রীকরণ পরিষেবা)

অ্যাগ্রিগেশন সার্ভিসের জন্য একটি বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট ব্যবহার করা প্রয়োজন যা একটি ক্লাউড প্রদানকারী ব্যবহার করে। এই কোডল্যাবে, অ্যাগ্রিগেশন পরিষেবা GCP-তে স্থাপন করা হবে, তবে AWSও সমর্থিত

1.6.1। স্থাপনা

জিক্লাউড সিএলআই সেটআপ করতে, টেরাফর্ম বাইনারি এবং মডিউল ডাউনলোড করতে এবং অ্যাগ্রিগেশন পরিষেবার জন্য জিসিপি সংস্থান তৈরি করতে GitHub-এ স্থাপনার নির্দেশাবলী অনুসরণ করুন।

স্থাপনার নির্দেশাবলীর মূল ধাপ:

  1. আপনার পরিবেশে "gcloud" CLI এবং Terraform সেট আপ করুন।
  2. Terraform স্টেট সঞ্চয় করার জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন।
  3. নির্ভরতা ডাউনলোড করুন।
  4. adtech_setup.auto.tfvars আপডেট করুন এবং adtech_setup Terraform চালান। একটি উদাহরণ adtech_setup.auto.tfvars ফাইলের জন্য পরিশিষ্ট দেখুন।
  5. dev.auto.tfvars আপডেট করুন, ডিপ্লোয় সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করুন এবং dev Terraform চালান। dev.auto.tfvars ফাইলের উদাহরণের জন্য পরিশিষ্ট দেখুন।
  6. একবার স্থাপনা সম্পূর্ণ হলে, Terraform আউটপুট থেকে frontend_service_cloudfunction_url ক্যাপচার করুন , যা পরবর্তী ধাপে অ্যাগ্রিগেশন সার্ভিসে অনুরোধ করার জন্য প্রয়োজন হবে।

1.6.2। রিপোর্ট বালতি

একবার প্রকল্পটি সেট আপ হয়ে গেলে, আপনি এই কোডল্যাব থেকে আপনার সমষ্টিগত প্রতিবেদন এবং সারাংশ প্রতিবেদনগুলি সঞ্চয় করতে ক্লাউড স্টোরেজে একটি বালতি তৈরি করবেন৷ এটি একটি বালতি তৈরি করার জন্য একটি উদাহরণ gcloud কমান্ড। আপনার পছন্দের একটি নাম এবং অবস্থান দিয়ে স্থানধারক প্রতিস্থাপন করুন।

gcloud storage buckets create gs://<bucket-name> --location=<location>

1.7। সম্পূর্ণ একত্রীকরণ পরিষেবা অনবোর্ডিং (একত্রীকরণ পরিষেবা)

অ্যাগ্রিগেশন পরিষেবার জন্য পরিষেবা ব্যবহার করতে সক্ষম হওয়ার জন্য সমন্বয়কারীদের অনবোর্ডিং প্রয়োজন৷ আপনার রিপোর্টিং সাইট এবং অন্যান্য তথ্য প্রদান করে, "গুগল ক্লাউড" নির্বাচন করে এবং আপনার পরিষেবা অ্যাকাউন্টের ঠিকানা প্রবেশ করান করে অ্যাগ্রিগেশন সার্ভিস অনবোর্ডিং ফর্মটি পূরণ করুন৷ এই পরিষেবা অ্যাকাউন্টটি পূর্বের পূর্বশর্ত (1.6. একটি GCP পরিবেশ সেট আপ) তৈরি করা হয়। (ইঙ্গিত: আপনি প্রদত্ত ডিফল্ট নাম ব্যবহার করলে, এই পরিষেবা অ্যাকাউন্টটি "worker-sa@" দিয়ে শুরু হবে)।

অনবোর্ডিং প্রক্রিয়া সম্পূর্ণ হওয়ার জন্য 2 সপ্তাহ পর্যন্ত সময় দিন।

1.8। API এন্ডপয়েন্ট (একত্রীকরণ পরিষেবা) কল করার জন্য আপনার পদ্ধতি নির্ধারণ করুন

এই কোডল্যাব অ্যাগ্রিগেশন সার্ভিস API এন্ডপয়েন্টে কল করার জন্য 2টি বিকল্প প্রদান করে: cURL এবং Postman । cURL হল আপনার টার্মিনাল থেকে API এন্ডপয়েন্ট কল করার দ্রুত এবং সহজ উপায়, যেহেতু এটির জন্য ন্যূনতম সেটআপের প্রয়োজন হয় এবং কোন অতিরিক্ত সফ্টওয়্যারের প্রয়োজন হয় না। যাইহোক, আপনি যদি সিআরএল ব্যবহার করতে না চান, তবে আপনি ভবিষ্যতে ব্যবহারের জন্য API অনুরোধগুলি চালানো এবং সংরক্ষণ করতে পোস্টম্যান ব্যবহার করতে পারেন।

ধারা 3.2-এ। অ্যাগ্রিগেশন সার্ভিস ইউসেজ, আপনি উভয় বিকল্প ব্যবহার করার জন্য বিস্তারিত নির্দেশাবলী পাবেন। আপনি কোন পদ্ধতি ব্যবহার করবেন তা নির্ধারণ করতে আপনি এখন তাদের পূর্বরূপ দেখতে পারেন। আপনি পোস্টম্যান নির্বাচন করলে, নিম্নলিখিত প্রাথমিক সেটআপটি সম্পাদন করুন।

1.8.1। ওয়ার্কস্পেস সেট আপ করুন

একটি পোস্টম্যান অ্যাকাউন্টের জন্য সাইন আপ করুন। একবার সাইন আপ করলে, আপনার জন্য স্বয়ংক্রিয়ভাবে একটি ওয়ার্কস্পেস তৈরি হয়ে যায়।

পোস্টম্যান ওয়ার্কস্পেস

যদি আপনার জন্য একটি ওয়ার্কস্পেস তৈরি করা না হয়, তাহলে "ওয়ার্কস্পেস" শীর্ষ নেভিগেশন আইটেমে যান এবং "ওয়ার্কস্পেস তৈরি করুন" নির্বাচন করুন।

"ব্ল্যাঙ্ক ওয়ার্কস্পেস" নির্বাচন করুন, পরবর্তীতে ক্লিক করুন এবং এটির নাম "GCP প্রাইভেসি স্যান্ডবক্স"। "ব্যক্তিগত" নির্বাচন করুন এবং "তৈরি করুন" ক্লিক করুন।

পূর্ব-কনফিগার করা ওয়ার্কস্পেস JSON কনফিগারেশন এবং গ্লোবাল এনভায়রনমেন্ট ফাইল ডাউনলোড করুন।

"আমদানি" বোতামের মাধ্যমে উভয় JSON ফাইলকে "My Workspace"-এ আমদানি করুন।

আমদানি বোতাম

এটি createJob এবং getJob HTTP অনুরোধের সাথে আপনার জন্য "GCP গোপনীয়তা স্যান্ডবক্স" সংগ্রহ তৈরি করবে।

1.8.2। অনুমোদন সেট আপ করুন

"GCP গোপনীয়তা স্যান্ডবক্স" সংগ্রহে ক্লিক করুন এবং "অনুমোদন" ট্যাবে নেভিগেট করুন।

অনুমোদন বোতাম

আপনি "বেয়ারার টোকেন" পদ্ধতি ব্যবহার করবেন। আপনার টার্মিনাল পরিবেশ থেকে, এই কমান্ডটি চালান এবং আউটপুট অনুলিপি করুন।

gcloud auth print-identity-token

তারপর, পোস্টম্যান অনুমোদন ট্যাবের "টোকেন" ক্ষেত্রে এই টোকেন মানটি পেস্ট করুন:

টোকেন ক্ষেত্র

1.8.3। পরিবেশ স্থাপন করুন

উপরের-ডান কোণায় "পরিবেশ দ্রুত চেহারা" নেভিগেট করুন:

পরিবেশ বোতাম

"সম্পাদনা" ক্লিক করুন এবং "পরিবেশ", "অঞ্চল" এবং "ক্লাউড-ফাংশন-আইডি" এর "বর্তমান মান" আপডেট করুন:

বর্তমান মান সেট করুন

আপনি আপাতত "রিকোয়েস্ট-আইডি" ফাঁকা রাখতে পারেন, কারণ আমরা পরে এটি পূরণ করব। অন্যান্য ক্ষেত্রগুলির জন্য, frontend_service_cloudfunction_url থেকে মানগুলি ব্যবহার করুন, যা পূর্বশর্ত 1.6-এ টেরাফর্ম স্থাপনার সফল সমাপ্তি থেকে ফিরে এসেছে। URL এই বিন্যাস অনুসরণ করে: https:// - -frontend-service- -uc.a.run.app https:// - -frontend-service- -uc.a.run.app https:// - -frontend-service- -uc.a.run.app https:// - -frontend-service- -uc.a.run.app

2. 2. স্থানীয় টেস্টিং কোডল্যাব

সম্পূর্ণ করার আনুমানিক সময়: <1 ঘন্টা

এনক্রিপ্ট না করা ডিবাগ রিপোর্টগুলি ব্যবহার করে অ্যাগ্রিগেশন করতে এবং সারাংশ রিপোর্ট তৈরি করতে আপনি আপনার মেশিনে স্থানীয় টেস্টিং টুল ব্যবহার করতে পারেন। আপনি শুরু করার আগে , নিশ্চিত করুন যে আপনি "স্থানীয় পরীক্ষা" লেবেলযুক্ত সমস্ত পূর্বশর্ত সম্পূর্ণ করেছেন।

কোডল্যাব ধাপ

ধাপ 2.1। ট্রিগার রিপোর্ট : ট্রিগার প্রাইভেট অ্যাগ্রিগেশন রিপোর্টিং রিপোর্ট সংগ্রহ করতে সক্ষম হবেন।

ধাপ 2.2। ডিবাগ AVRO রিপোর্ট তৈরি করুন : সংগৃহীত JSON রিপোর্টকে একটি AVRO ফর্ম্যাটেড রিপোর্টে রূপান্তর করুন। এই ধাপটি একই রকম হবে যখন adTechs API রিপোর্টিং এন্ডপয়েন্ট থেকে রিপোর্ট সংগ্রহ করে এবং JSON রিপোর্টগুলিকে AVRO ফর্ম্যাটে করা রিপোর্টে রূপান্তর করে।

ধাপ 2.3। বালতি কী পুনরুদ্ধার করুন : বালতি কীগুলি অ্যাডটেক দ্বারা ডিজাইন করা হয়েছে। এই কোডল্যাবে, যেহেতু বালতিগুলি পূর্ব-নির্ধারিত, প্রদত্ত হিসাবে বালতি কীগুলি পুনরুদ্ধার করুন।

ধাপ 2.4। আউটপুট ডোমেন AVRO তৈরি করুন : একবার বালতি কীগুলি পুনরুদ্ধার করা হলে, আউটপুট ডোমেন AVRO ফাইল তৈরি করুন।

ধাপ 2.5। সারসংক্ষেপ প্রতিবেদন তৈরি করুন : স্থানীয় পরিবেশে সারসংক্ষেপ প্রতিবেদন তৈরি করতে স্থানীয় পরীক্ষার সরঞ্জাম ব্যবহার করুন।

ধাপ 2.6। সংক্ষিপ্ত প্রতিবেদনগুলি পর্যালোচনা করুন : স্থানীয় পরীক্ষার সরঞ্জাম দ্বারা তৈরি সারাংশ প্রতিবেদনটি পর্যালোচনা করুন।

2.1। ট্রিগার রিপোর্ট

একটি ব্যক্তিগত সমষ্টি রিপোর্ট ট্রিগার করতে, আপনি গোপনীয়তা স্যান্ডবক্স ডেমো সাইট (https://privacy-sandbox-demos-news.dev/?env=gcp) বা আপনার নিজস্ব সাইট (যেমন, https://adtechexample.com) ব্যবহার করতে পারেন . আপনি যদি নিজের সাইটটি ব্যবহার করেন এবং আপনি তালিকাভুক্তি এবং প্রত্যয়ন এবং একত্রিতকরণ পরিষেবা অনবোর্ডিং সম্পন্ন না করেন তবে আপনাকে একটি Chrome পতাকা এবং CLI সুইচ ব্যবহার করতে হবে৷

এই ডেমোর জন্য, আমরা গোপনীয়তা স্যান্ডবক্স ডেমো সাইট ব্যবহার করব। সাইটে যেতে লিঙ্ক অনুসরণ করুন; তারপর, আপনি chrome://private-aggregation-internals এ রিপোর্ট দেখতে পারেন:

Chrome অভ্যন্তরীণ পৃষ্ঠা

যে রিপোর্টটি {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage এন্ডপয়েন্টে পাঠানো হয় সেটি Chrome ইন্টারনাল পৃষ্ঠায় প্রদর্শিত রিপোর্টের "রিপোর্ট বডি"-তেও পাওয়া যায়।

আপনি এখানে অনেক রিপোর্ট দেখতে পারেন, কিন্তু এই কোডল্যাবের জন্য, GCP-নির্দিষ্ট এবং ডিবাগ এন্ডপয়েন্ট দ্বারা তৈরি করা সমষ্টিগত রিপোর্ট ব্যবহার করুন। "রিপোর্ট URL"-এ "/debug/" থাকবে এবং "রিপোর্ট বডি"-এর aggregation_coordinator_origin field এই URL থাকবে: https://publickeyservice.msmt.gcp.privacysandboxservices.com।

GCP ডিবাগ রিপোর্ট

2.2। ডিবাগ এগ্রিগেটেবল রিপোর্ট তৈরি করুন

chrome://private-aggregation-internals এর "রিপোর্ট বডি"-এ প্রাপ্ত রিপোর্টটি অনুলিপি করুন এবং privacy-sandbox-demos/tools/aggregatable_report_converter/out/artifacts/aggregatable_report_converter_jar ফোল্ডারে একটি JSON ফাইল তৈরি করুন (পূর্বে ডাউনলোড করার জন্য 1.5)।

এই উদাহরণে, আমরা ভিম ব্যবহার করছি যেহেতু আমরা লিনাক্স ব্যবহার করছি। কিন্তু আপনি চাইলে যেকোনো টেক্সট এডিটর ব্যবহার করতে পারেন।

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 কপি করুন।

ক্লিয়ারটেক্সট পেলোড ডিবাগ করুন

goo.gle/ags-payload-decoder খুলুন এবং "INPUT" বক্সে আপনার 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। স্থানীয় টেস্টিং টুল ব্যবহার করে সারাংশ রিপোর্ট তৈরি করুন

আমরা LocalTestingTool_{version}.jar ব্যবহার করব যা পূর্বপ্রস্তুতি 1.3 এ ডাউনলোড করা হয়েছিল নীচের কমান্ডটি ব্যবহার করে সারাংশ রিপোর্ট তৈরি করতে। আপনার ডাউনলোড করা সংস্করণ দিয়ে {version} প্রতিস্থাপন করুন। LocalTestingTool_{version}.jar বর্তমান ডিরেক্টরিতে সরাতে মনে রাখবেন, অথবা এর বর্তমান অবস্থান উল্লেখ করার জন্য একটি আপেক্ষিক পথ যোগ করুন।

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-এ রূপান্তর করতে adTech-এর কোড লেখা উচিত।

AVRO রিপোর্টকে JSON-এ রূপান্তর করতে আমরা aggregatable_report_converter.jar ব্যবহার করব।

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

এটি নীচের অনুরূপ একটি প্রতিবেদন প্রদান করে। একই ডিরেক্টরিতে তৈরি একটি রিপোর্ট output.json সহ।

আউটপুট JSON

3. 3. অ্যাগ্রিগেশন সার্ভিস কোডল্যাব

সম্পূর্ণ করার আনুমানিক সময়: 1 ঘন্টা

আপনি শুরু করার আগে , নিশ্চিত করুন যে আপনি "একত্রীকরণ পরিষেবা" লেবেলযুক্ত সমস্ত পূর্বশর্ত সম্পূর্ণ করেছেন।

কোডল্যাব ধাপ

ধাপ 3.1। অ্যাগ্রিগেশন সার্ভিস ইনপুট ক্রিয়েশন : অ্যাগ্রিগেশন সার্ভিস রিপোর্ট তৈরি করুন যা অ্যাগ্রিগেশন সার্ভিসের জন্য ব্যাচ করা হয়।

  • ধাপ 3.1.1। ট্রিগার রিপোর্ট
  • ধাপ 3.1.2। সমষ্টিগত প্রতিবেদন সংগ্রহ করুন
  • ধাপ 3.1.3। প্রতিবেদনগুলিকে AVRO-তে রূপান্তর করুন
  • ধাপ 3.1.4। output_domain AVRO তৈরি করুন
  • ধাপ 3.1.5। ক্লাউড স্টোরেজ বালতিতে প্রতিবেদনগুলি সরান৷

ধাপ 3.2। অ্যাগ্রিগেশন সার্ভিস ব্যবহার : সারাংশ রিপোর্ট তৈরি করতে এবং সারাংশ রিপোর্ট পর্যালোচনা করতে অ্যাগ্রিগেশন সার্ভিস API ব্যবহার করুন।

  • ধাপ 3.2.1। ব্যাচে createJob এন্ডপয়েন্ট ব্যবহার করে
  • ধাপ 3.2.2। ব্যাচ স্ট্যাটাস পুনরুদ্ধার করতে getJob এন্ডপয়েন্ট ব্যবহার করে
  • ধাপ 3.2.3. সারাংশ রিপোর্ট পর্যালোচনা

3.1। এগ্রিগেশন সার্ভিস ইনপুট ক্রিয়েশন

অ্যাগ্রিগেশন সার্ভিসে ব্যাচ করার জন্য AVRO রিপোর্ট তৈরি করতে এগিয়ে যান। এই ধাপগুলির শেল কমান্ডগুলি GCP-এর ক্লাউড শেল (যতক্ষণ না আপনার ক্লাউড শেল পরিবেশে পূর্বশর্ত থেকে নির্ভরতা ক্লোন করা হয়) বা স্থানীয় সম্পাদন পরিবেশে চালানো যেতে পারে।

3.1.1। ট্রিগার রিপোর্ট

সাইটে যেতে লিঙ্ক অনুসরণ করুন; তারপর, আপনি chrome://private-aggregation-internals এ রিপোর্ট দেখতে পারেন:

Chrome অভ্যন্তরীণ পৃষ্ঠা

যে রিপোর্টটি {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage এন্ডপয়েন্টে পাঠানো হয় সেটি Chrome ইন্টারনাল পৃষ্ঠায় প্রদর্শিত রিপোর্টের "রিপোর্ট বডি"-তেও পাওয়া যায়।

আপনি এখানে অনেক রিপোর্ট দেখতে পারেন, কিন্তু এই কোডল্যাবের জন্য, GCP-নির্দিষ্ট এবং ডিবাগ এন্ডপয়েন্ট দ্বারা তৈরি করা সমষ্টিগত রিপোর্ট ব্যবহার করুন। "রিপোর্ট URL"-এ "/debug/" থাকবে এবং "রিপোর্ট বডি"-এর aggregation_coordinator_origin field এই URL থাকবে: https://publickeyservice.msmt.gcp.privacysandboxservices.com।

GCP ডিবাগ রিপোর্ট

3.1.2। সমষ্টিগত প্রতিবেদন সংগ্রহ করুন

আপনার সংশ্লিষ্ট API এর সুপরিচিত শেষ পয়েন্ট থেকে আপনার সমষ্টিগত প্রতিবেদন সংগ্রহ করুন।

  • ব্যক্তিগত সমষ্টি: {reporting-origin}/.well-known/private-aggregation/report-shared-storage
  • অ্যাট্রিবিউশন রিপোর্টিং - সারাংশ রিপোর্ট: {reporting-origin}/.well-known/attribution-reporting/report-aggregate-attribution

এই কোডল্যাবের জন্য, আমরা ম্যানুয়ালি রিপোর্ট সংগ্রহ করি। উৎপাদনে, adTechs প্রোগ্রামাটিকভাবে রিপোর্ট সংগ্রহ ও রূপান্তর করবে বলে আশা করা হচ্ছে।

চলুন এগিয়ে যাই এবং chrome://private-aggregation-internals থেকে "রিপোর্ট বডি"-তে JSON রিপোর্টটি অনুলিপি করি।

এই উদাহরণে, আমরা ভিম ব্যবহার করি যেহেতু আমরা লিনাক্স ব্যবহার করছি। কিন্তু আপনি চাইলে যেকোনো টেক্সট এডিটর ব্যবহার করতে পারেন।

vim report.json

প্রতিবেদনটি report.json এ পেস্ট করুন এবং আপনার ফাইলটি সংরক্ষণ করুন।

JSON রিপোর্ট করুন

3.1.3। প্রতিবেদনগুলিকে AVRO-তে রূপান্তর করুন

.well-known endpoints থেকে প্রাপ্ত রিপোর্টগুলি JSON ফর্ম্যাটে এবং AVRO রিপোর্ট ফর্ম্যাটে রূপান্তর করা প্রয়োজন৷ একবার আপনার কাছে JSON রিপোর্ট হয়ে গেলে, যেখানে report.json সংরক্ষিত আছে সেখানে নেভিগেট করুন এবং ডিবাগ এগ্রিগেটেবল রিপোর্ট তৈরি করতে সাহায্য করতে aggregatable_report_converter.jar ব্যবহার করুন। এটি আপনার বর্তমান ডিরেক্টরিতে report.avro নামে একটি সমষ্টিগত প্রতিবেদন তৈরি করে।

java -jar aggregatable_report_converter.jar \
  --request_type convertToAvro \
  --input_file report.json

3.1.4। output_domain AVRO তৈরি করুন

output_domain.avro ফাইলটি তৈরি করতে, আপনার বালতি কীগুলির প্রয়োজন যা প্রতিবেদনগুলি থেকে পুনরুদ্ধার করা যেতে পারে।

বালতি কীগুলি অ্যাডটেক দ্বারা ডিজাইন করা হয়েছে। যাইহোক, এই ক্ষেত্রে, সাইট গোপনীয়তা স্যান্ডবক্স ডেমো বালতি কী তৈরি করে। যেহেতু এই সাইটের জন্য ব্যক্তিগত সমষ্টি ডিবাগ মোডে আছে, আমরা বালতি কী পেতে "রিপোর্ট বডি" থেকে debug_cleartext_payload ব্যবহার করতে পারি।

এগিয়ে যান এবং রিপোর্টের বডি থেকে debug_cleartext_payload কপি করুন।

ক্লিয়ারটেক্সট পেলোড ডিবাগ করুন

goo.gle/ags-payload-decoder খুলুন এবং "INPUT" বক্সে আপনার debug_cleartext_payload পেস্ট করুন এবং "ডিকোড" এ ক্লিক করুন।

ডিকোড বোতাম

পৃষ্ঠাটি বালতি কী এর দশমিক মান প্রদান করে। নীচে একটি নমুনা বালতি কী আছে.

বালতির চাবি

এখন যেহেতু আমাদের কাছে বালতি কী আছে, আসুন আমরা যে ফোল্ডারে কাজ করছি সেই ফোল্ডারে output_domain.avro তৈরি করি। নিশ্চিত করুন যে আপনি প্রাপ্ত করা বালতি কী দিয়ে বাকেট কী প্রতিস্থাপন করেছেন।

java -jar aggregatable_report_converter.jar \
  --request_type createDomainAvro \
  --bucket_key <bucket key>

স্ক্রিপ্টটি আপনার বর্তমান ফোল্ডারে output_domain.avro ফাইল তৈরি করে।

3.1.5। ক্লাউড স্টোরেজ বালতিতে প্রতিবেদনগুলি সরান৷

একবার AVRO রিপোর্ট এবং আউটপুট ডোমেন তৈরি হয়ে গেলে, ক্লাউড স্টোরেজের বালতিতে রিপোর্ট এবং আউটপুট ডোমেন সরাতে এগিয়ে যান (যা আপনি পূর্বশর্ত 1.6-এ চূড়ান্ত পদক্ষেপ হিসাবে তৈরি করেছেন)।

আপনার স্থানীয় পরিবেশে gcloud CLI সেটআপ থাকলে, সংশ্লিষ্ট ফোল্ডারে ফাইলগুলি অনুলিপি করতে নীচের কমান্ডগুলি ব্যবহার করুন।

gcloud storage cp report.avro gs://<bucket_name>/reports/

gcloud storage cp output_domain.avro gs://<bucket_name>/output_domain/

অন্যথায়, ম্যানুয়ালি ফাইলগুলি আপনার বালতিতে আপলোড করুন৷ "reports" নামে একটি ফোল্ডার তৈরি করুন এবং সেখানে report.avro ফাইলটি আপলোড করুন। "output_domains" নামে একটি ফোল্ডার তৈরি করুন এবং সেখানে output_domain.avro ফাইলটি আপলোড করুন।

3.2। একত্রীকরণ পরিষেবা ব্যবহার

পূর্বশর্ত 1.8-এ স্মরণ করুন যে আপনি এগ্রিগেশন সার্ভিস এন্ডপয়েন্টে API অনুরোধ করার জন্য cURL বা পোস্টম্যান নির্বাচন করেছেন। নীচে আপনি উভয় বিকল্পের জন্য নির্দেশাবলী পাবেন।

3.2.1। ব্যাচে createJob এন্ডপয়েন্ট ব্যবহার করে

একটি চাকরি তৈরি করতে নীচের CURL বা পোস্টম্যান নির্দেশাবলী ব্যবহার করুন।

cURL

আপনার "টার্মিনালে", একটি অনুরোধ বডি ফাইল তৈরি করুন ( body.json ) এবং নীচে পেস্ট করুন৷ স্থানধারক মান আপডেট করতে ভুলবেন না. প্রতিটি ক্ষেত্র কি প্রতিনিধিত্ব করে সে সম্পর্কে আরও তথ্যের জন্য এই API ডকুমেন্টেশন পড়ুন।

{
  "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>",
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

নিচের অনুরোধটি কার্যকর করুন। frontend_service_cloudfunction_url এর মানগুলির সাথে cURL অনুরোধের URL-এ স্থানধারকগুলিকে প্রতিস্থাপন করুন, যা পূর্বশর্ত 1.6-এ টেরাফর্ম স্থাপনার সফল সমাপ্তির পরে আউটপুট।

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  -d @body.json \
  https://<environment>-<region>-frontend-service-<cloud-function-id>-uc.a.run.app/v1alpha/createJob

একবার অ্যাগ্রিগেশন সার্ভিসের দ্বারা অনুরোধটি গৃহীত হলে আপনার একটি HTTP 202 প্রতিক্রিয়া পাওয়া উচিত। অন্যান্য সম্ভাব্য প্রতিক্রিয়া কোডগুলি এপিআই স্পেসে নথিভুক্ত করা হয়েছে।

পোস্টম্যান

createJob এন্ডপয়েন্টের জন্য, সমষ্টিগত রিপোর্ট, আউটপুট ডোমেন এবং সারাংশ রিপোর্টের অবস্থান এবং ফাইলের নাম সহ অ্যাগ্রিগেশন পরিষেবা প্রদান করার জন্য একটি রিকোয়েস্ট বডি প্রয়োজন।

createJob অনুরোধের "Body" ট্যাবে নেভিগেট করুন:

বডি ট্যাব

প্রদত্ত JSON-এর মধ্যে স্থানধারকগুলি প্রতিস্থাপন করুন৷ এই ক্ষেত্রগুলি এবং তারা কী প্রতিনিধিত্ব করে সে সম্পর্কে আরও তথ্যের জন্য, API ডকুমেন্টেশন পড়ুন।

{
  "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>",
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

createJob API অনুরোধটি "পাঠান":

পাঠান বোতাম

প্রতিক্রিয়া কোড পৃষ্ঠার নীচের অর্ধেক পাওয়া যাবে:

প্রতিক্রিয়া কোড

একবার অ্যাগ্রিগেশন সার্ভিসের দ্বারা অনুরোধটি গৃহীত হলে আপনার একটি HTTP 202 প্রতিক্রিয়া পাওয়া উচিত। অন্যান্য সম্ভাব্য প্রতিক্রিয়া কোডগুলি এপিআই স্পেসে নথিভুক্ত করা হয়েছে।

3.2.2। ব্যাচ স্ট্যাটাস পুনরুদ্ধার করতে getJob এন্ডপয়েন্ট ব্যবহার করে

একটি চাকরি পেতে নীচের CURL বা পোস্টম্যান নির্দেশাবলী ব্যবহার করুন।

cURL

আপনার টার্মিনালে নীচের অনুরোধটি কার্যকর করুন। URL-এ স্থানধারকগুলিকে frontend_service_cloudfunction_url এর মান দিয়ে প্রতিস্থাপন করুন, যেটি আপনি createJob অনুরোধের জন্য ব্যবহার করেছেন সেই একই URL৷ "job_request_id" এর জন্য, createJob এন্ডপয়েন্টের সাথে আপনার তৈরি করা কাজের মানটি ব্যবহার করুন।

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  https://<environment>-<region>-frontend-service-<cloud-function-id>-uc.a.run.app/v1alpha/getJob?job_request_id=<job_request_id>

ফলাফলটি 200-এর HTTP স্থিতি সহ আপনার কাজের অনুরোধের স্থিতি ফেরত দেবে। অনুরোধ "বডি"-তে job_status , return_message এবং error_messages (যদি চাকরিটি ভুল হয়ে থাকে) এর মতো প্রয়োজনীয় তথ্য রয়েছে।

পোস্টম্যান

কাজের অনুরোধের স্থিতি পরীক্ষা করতে, আপনি getJob এন্ডপয়েন্ট ব্যবহার করতে পারেন। getJob অনুরোধের "Params" বিভাগে, job_request_id মানটিকে job_request_id এ আপডেট করুন যা createJob অনুরোধে পাঠানো হয়েছিল।

কাজের অনুরোধ আইডি

getJob অনুরোধটি "পাঠান":

পাঠান বোতাম

ফলাফলটি 200-এর HTTP স্থিতি সহ আপনার কাজের অনুরোধের স্থিতি ফেরত দেবে। অনুরোধ "বডি"-তে job_status , return_message এবং error_messages (যদি চাকরিটি ভুল হয়ে থাকে) এর মতো প্রয়োজনীয় তথ্য রয়েছে।

প্রতিক্রিয়া JSON

3.2.3। সারাংশ রিপোর্ট পর্যালোচনা

একবার আপনি আপনার আউটপুট ক্লাউড স্টোরেজ বালতিতে আপনার সারাংশ প্রতিবেদনটি পেয়ে গেলে, আপনি এটি আপনার স্থানীয় পরিবেশে ডাউনলোড করতে পারেন। সংক্ষিপ্ত প্রতিবেদনগুলি AVRO ফর্ম্যাটে এবং একটি JSON এ আবার রূপান্তর করা যেতে পারে৷ আপনি নীচের কমান্ডটি ব্যবহার করে আপনার প্রতিবেদন পড়তে aggregatable_report_converter.jar ব্যবহার করতে পারেন।

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

এটি প্রতিটি বালতি কী এর সমষ্টিগত মানগুলির একটি json প্রদান করে যা নীচের মত দেখায়।

সারসংক্ষেপ প্রতিবেদন

আপনার createJob অনুরোধে debug_run সত্য হিসাবে অন্তর্ভুক্ত করা উচিত, তাহলে আপনি output_data_blob_prefix এ অবস্থিত ডিবাগ ফোল্ডারে আপনার সারাংশ রিপোর্ট পেতে পারেন। প্রতিবেদনটি AVRO ফরম্যাটে এবং উপরের কমান্ডটি ব্যবহার করে JSON-এ রূপান্তর করা যেতে পারে।

রিপোর্টে বালতি কী, অনোইজড মেট্রিক এবং গোলমাল রয়েছে যা সারাংশ রিপোর্ট তৈরি করতে আননোইজড মেট্রিকে যোগ করা হয়। প্রতিবেদনটি নীচের অনুরূপ।

গোলমাল রিপোর্ট

টীকাগুলিতে "in_reports" এবং/অথবা "in_domain" রয়েছে যার অর্থ:

  • in_reports - বালতি কী সমষ্টিগত প্রতিবেদনের ভিতরে উপলব্ধ।
  • in_domain - বালতি কীটি output_domain AVRO ফাইলের ভিতরে উপলব্ধ।

4. 4. ক্লিন-আপ

টেরাফর্মের মাধ্যমে একত্রিতকরণ পরিষেবার জন্য তৈরি সংস্থানগুলি মুছতে, adtech_setup এবং dev (বা অন্যান্য পরিবেশ) ফোল্ডারে ধ্বংস কমান্ডটি ব্যবহার করুন:

$ cd <repository_root>/terraform/gcp/environments/adtech_setup
$ terraform destroy
$ cd <repository_root>/terraform/gcp/environments/dev
$ terraform destroy

ক্লাউড স্টোরেজ বালতিটি মুছে ফেলতে যা আপনার সমষ্টিগত প্রতিবেদন এবং সারাংশ প্রতিবেদনগুলি ধরে রেখেছে:

$ gcloud storage buckets delete gs://my-bucket

আপনি আপনার Chrome কুকি সেটিংস পূর্বশর্ত 1.2 থেকে তাদের পূর্ববর্তী অবস্থায় প্রত্যাবর্তন করতেও বেছে নিতে পারেন।

5. 5. পরিশিষ্ট

উদাহরণ adtech_setup.auto.tfvars ফাইল

/**
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

project = "my-project-id"

# Required to generate identity token for access of Adtech Services API endpoints
service_account_token_creator_list = ["user:me@email.com"]

# Uncomment the below line if you like Terraform to create an Artifact registry repository
# for self-build container artifacts. "artifact_repo_location" defaults to "us".
artifact_repo_name     = "my-ags-artifacts"

# Note: Either one of [1] or [2] must be uncommented.

# [1] Uncomment below lines if you like Terraform grant needed permissions to
# pre-existing service accounts
# deploy_service_account_email = "<YourDeployServiceAccountName>@<ProjectID>.iam.gserviceaccount.com"
# worker_service_account_email = "<YourWorkerServiceAccountName>@<ProjectID>.iam.gserviceaccount.com"

# [2] Uncomment below lines if you like Terraform to create service accounts
# and needed permissions granted e.g "deploy-sa" or "worker-sa"
deploy_service_account_name = "deploy-sa"
worker_service_account_name = "worker-sa"
# Uncomment the below line if you want Terraform to create the
# below bucket. "data_bucket_location" defaults to "us".
data_bucket_name     = "my-ags-data"

# Uncomment the below lines if you want to specify service account customer role names
# deploy_sa_role_name = "<YourDeploySACustomRole>"
# worker_sa_role_name = "<YourWorkerSACustomRole>"

dev.auto.tfvars ফাইলের উদাহরণ

/**
 * Copyright 2022 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

# Example values required by job_service.tf
#
# These values should be modified for each of your environments.
region      = "us-central1"
region_zone = "us-central1-c"

project_id  = "my-project-id"
environment = "operator-demo-env"

# Co-locate your Cloud Spanner instance configuration with the region above.
# https://cloud.google.com/spanner/docs/instance-configurations#regional-configurations
spanner_instance_config = "regional-us-central1"

# Adjust this based on the job load you expect for your deployment.
# Monitor the spanner instance utilization to decide on scale out / scale in.
# https://console.cloud.google.com/spanner/instances
spanner_processing_units = 100

# Uncomment the line below at your own risk to disable Spanner database protection.
# This needs to be set to false and applied before destroying all resources is possible.
spanner_database_deletion_protection = false

instance_type = "n2d-standard-8" # 8 cores, 32GiB

# Container image location that packages the job service application
# If not set otherwise, uncomment and edit the line below:
#worker_image = "<location>/<project>/<repository>/<image>:<tag or digest>"

# Service account created and onboarded for worker
user_provided_worker_sa_email = "worker-sa@my-project-id.iam.gserviceaccount.com"

min_worker_instances = 1
max_worker_instances = 20