ทำงานกับ Aggregation Service บน AWS

1. ข้อกำหนดเบื้องต้น

หากต้องการใช้ Codelab นี้ คุณจะต้องมีคุณสมบัติเบื้องต้น 2-3 อย่าง ข้อกำหนดแต่ละข้อจะมีการทำเครื่องหมายว่าจำเป็นต่อ "การทดสอบในพื้นที่" หรือ "บริการรวบรวมข้อมูล"

1.1 ดาวน์โหลดเครื่องมือทดสอบในเครื่อง (การทดสอบในเครื่อง)

การทดสอบในเครื่องจะต้องมีการดาวน์โหลดเครื่องมือทดสอบในเครื่อง เครื่องมือจะสร้างรายงานสรุปจากรายงานการแก้ไขข้อบกพร่องที่ไม่ได้เข้ารหัส

เครื่องมือทดสอบในเครื่องมีให้ดาวน์โหลดได้ใน Lambda JAR Archive ใน GitHub ซึ่งควรตั้งชื่อเป็น LocalTestingTool_{version}.jar

1.2 ตรวจสอบว่าได้ติดตั้ง JAVA JRE (บริการทดสอบและรวบรวมข้อมูลในพื้นที่)

เปิด "Terminal" และใช้ java --version เพื่อตรวจสอบว่าเครื่องมี Java หรือ openJDK ติดตั้งอยู่

ตรวจสอบเวอร์ชัน Java Jre โดยใช้ Java\n--เวอร์ชัน

หากยังไม่ได้ติดตั้ง คุณจะดาวน์โหลดและติดตั้งได้จากเว็บไซต์ Java หรือเว็บไซต์ openJDK

1.3 ดาวน์โหลดตัวแปลงรายงานที่รวบรวมได้ (บริการทดสอบและรวบรวมข้อมูลในพื้นที่)

คุณสามารถดาวน์โหลดสำเนาของตัวแปลงรายงานแบบรวมได้จากที่เก็บ GitHub สำหรับ Privacy Sandbox

1.4 เปิดใช้ Privacy Sandbox API (บริการทดสอบและรวบรวมข้อมูลภายในเครื่อง)

ในเบราว์เซอร์ ให้ไปที่ chrome://flags/#privacy-sandbox-ads-apis แล้วเปิดใช้ Privacy Sandbox API

Privacy Sandbox chromeflag

ตรวจสอบว่าได้เปิดใช้งานคุกกี้ของบุคคลที่สามแล้ว

ในเบราว์เซอร์ ให้ไปที่ chrome://settings/cookies แล้วเลือก "บล็อกคุกกี้ของบุคคลที่สามในโหมดไม่ระบุตัวตน"

การตั้งค่า Chrome ของคุกกี้ของบุคคลที่สาม

1.5. การลงทะเบียนเว็บและ Android (บริการรวบรวมข้อมูล)

หากต้องการใช้ Privacy Sandbox API ในสภาพแวดล้อมเวอร์ชันที่ใช้งานจริง โปรดตรวจสอบว่าคุณได้ลงทะเบียนและเอกสารรับรองสำหรับทั้ง Chrome และ Android เรียบร้อยแล้ว

สำหรับการทดสอบในเครื่อง คุณปิดใช้การลงทะเบียนได้โดยใช้แฟล็ก Chrome และสวิตช์ CLI

หากต้องการใช้ Chrome Flag สำหรับการสาธิต ให้ไปที่ chrome://flags/#privacy-sandbox-enrollment-overrides และอัปเดตการลบล้างด้วยเว็บไซต์ของคุณ หรือหากคุณจะใช้เว็บไซต์เดโมของเรา ก็ไม่จําเป็นต้องอัปเดต

การลงทะเบียน Privacy Sandbox ลบล้าง Chromeflag

1.6. การเริ่มต้นใช้งานบริการรวบรวมข้อมูล (Aggregation Service)

บริการรวบรวมข้อมูลกำหนดให้ผู้ประสานงานต้องเริ่มต้นใช้งาน เพื่อให้ใช้บริการได้ กรอกแบบฟอร์มการเริ่มต้นใช้งานบริการรวบรวมข้อมูลโดยระบุที่อยู่เว็บไซต์ที่รายงาน รหัสบัญชี AWS และข้อมูลอื่นๆ

1.7 ผู้ให้บริการระบบคลาวด์ (บริการรวบรวม)

บริการรวบรวมต้องใช้สภาพแวดล้อมการดำเนินการที่เชื่อถือได้ซึ่งใช้สภาพแวดล้อมระบบคลาวด์ Amazon Web Services (AWS) และ Google Cloud (GCP) รองรับบริการรวบรวมข้อมูล Codelab นี้จะครอบคลุมเฉพาะการผสานรวม AWS เท่านั้น

AWS มีสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ที่เรียกว่า Nitro Enclave ตรวจสอบว่าคุณมีบัญชี AWS แล้วทำตามวิธีการติดตั้งและอัปเดต AWS CLI เพื่อตั้งค่าสภาพแวดล้อม AWS CLI

หาก AWS CLI เป็นรายการใหม่ คุณจะกำหนดค่า AWS CLI ได้โดยใช้วิธีการกำหนดค่า CLI

1.7.1. สร้างที่เก็บข้อมูล AWS S3

สร้างที่เก็บข้อมูล AWS S3 เพื่อจัดเก็บสถานะ Terraform และที่เก็บข้อมูล 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

1.7.2. สร้างคีย์การเข้าถึงของผู้ใช้

สร้างคีย์การเข้าถึงของผู้ใช้โดยใช้คู่มือ AWS ชื่อนี้จะใช้ในการเรียกปลายทาง API ของ createJob และ getJob ที่สร้างขึ้นบน AWS

1.7.3. สิทธิ์ของผู้ใช้และกลุ่ม AWS

หากต้องการทำให้ Aggregation Service ใช้งานได้บน AWS คุณจะต้องให้สิทธิ์บางอย่างแก่ผู้ใช้ที่ใช้สำหรับการทำให้บริการใช้งานได้ สำหรับ Codelab นี้ โปรดตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงระดับผู้ดูแลระบบเพื่อให้แน่ใจว่าผู้ใช้มีสิทธิ์โดยสมบูรณ์ในการทำให้ใช้งานได้

1.8 เทอร์ราฟอร์ม (บริการรวบรวมเนื้อหา)

Codelab นี้ใช้ terform เพื่อทำให้บริการ Aggregation ใช้งานได้ ตรวจสอบว่าได้ติดตั้งไบนารี terform ในสภาพแวดล้อมภายในแล้ว

ดาวน์โหลดไบนารี Terraform ในสภาพแวดล้อมภายในของคุณ

เมื่อดาวน์โหลดไบนารี terform แล้ว ให้แตกไฟล์และย้ายไบนารี Terraform ไปยัง /usr/local/bin

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

ตรวจสอบว่า Terraform พร้อมใช้งานใน classpath

terraform -v

1.9 Postman (สำหรับ Aggregation Service AWS)

สำหรับ Codelab นี้ ให้ใช้ Postman สำหรับการจัดการคำขอ

สร้างพื้นที่ทำงานโดยไปที่รายการการนำทางด้านบน "พื้นที่ทำงาน" แล้วเลือก "สร้างพื้นที่ทำงาน"

Postmanworkspace

เลือก "พื้นที่ทํางานเปล่า" คลิกถัดไป แล้วตั้งชื่อว่า "Privacy Sandbox" เลือก "ส่วนตัว" และคลิก "สร้าง"

ดาวน์โหลดการกำหนดค่า JSON และไฟล์สภาพแวดล้อมส่วนกลางของพื้นที่ทำงานที่กำหนดค่าไว้ล่วงหน้า

นําเข้าไฟล์ JSON ไปยัง "พื้นที่ทำงานของฉัน" โดยใช้ปุ่ม "นำเข้า"

นำเข้าไฟล์ JSON ของ Postman

การดำเนินการนี้จะสร้างคอลเล็กชัน Privacy Sandbox ให้กับคุณ รวมถึงคำขอ HTTP createJob และ getJob

คอลเล็กชันนำเข้าจากบุรุษไปรษณีย์

อัปเดต "Access Key" (คีย์การเข้าถึง) และ "Secret Key" ของ AWS ผ่าน "Environment quick look"

Quicklook สภาพแวดล้อม Postman

คลิก "แก้ไข" และอัปเดต "ค่าปัจจุบัน" ของทั้ง "access_key" และ "secret_key" โปรดทราบว่า frontend_api_id จะอยู่ในส่วน 3.1.4 ของเอกสารนี้ และเราขอแนะนำให้ใช้ภูมิภาค us-east-1 อย่างไรก็ตาม หากต้องการติดตั้งใช้งานในภูมิภาคอื่น โปรดตรวจสอบว่าได้คัดลอก AMI ที่เผยแพร่แล้วไปยังบัญชี หรือดำเนินการสร้างด้วยตนเองโดยใช้สคริปต์ที่ให้ไว้

ตัวแปรร่วมสากล

บุรุษไปรษณีย์แก้ไขตัวแปรร่วม

2. Codelab สำหรับการทดสอบในเครื่อง

คุณสามารถใช้เครื่องมือทดสอบในเครื่องเพื่อรวบรวมข้อมูลและสร้างรายงานสรุปโดยใช้รายงานการแก้ไขข้อบกพร่องที่ไม่เข้ารหัส

ขั้นตอนของ Codelab

ขั้นตอนที่ 2.1 รายงานทริกเกอร์: เรียกใช้การรายงานการรวมส่วนตัวเพื่อให้รวบรวมรายงานได้

ขั้นตอนที่ 2.2 สร้างรายงานแบบรวมของการแก้ไขข้อบกพร่องได้: แปลงรายงาน JSON ที่รวบรวมเป็นรายงานในรูปแบบ AVRO
ขั้นตอนนี้จะคล้ายกับเวลาที่เทคโนโลยีโฆษณารวบรวมรายงานจากปลายทางการรายงานของ API และแปลงรายงาน JSON เป็นรายงานในรูปแบบ AVRO

ขั้นตอนที่ 2.3 แยกวิเคราะห์คีย์ที่เก็บข้อมูลจากรายงานแก้ไขข้อบกพร่อง: คีย์ที่เก็บข้อมูลออกแบบโดยเทคโนโลยีโฆษณา ใน Codelab นี้ ให้เรียกข้อมูลคีย์ที่เก็บข้อมูลตามที่ให้มาเนื่องจากมีการกำหนดที่เก็บข้อมูลไว้ล่วงหน้าแล้ว

ขั้นตอนที่ 2.4 สร้างโดเมนเอาต์พุต AVRO: เมื่อเรียกข้อมูลคีย์ที่เก็บข้อมูลแล้ว ให้สร้างไฟล์ AVRO ของโดเมนเอาต์พุต

ขั้นตอนที่ 2.5 สร้างรายงานสรุปโดยใช้เครื่องมือทดสอบในเครื่อง: ใช้เครื่องมือทดสอบในเครื่องเพื่อให้สร้างรายงานสรุปในสภาพแวดล้อมในเครื่องได้

ขั้นตอนที่ 2.6 ตรวจสอบรายงานสรุป: ดูรายงานสรุปที่สร้างโดยเครื่องมือทดสอบในพื้นที่

2.1 รายงานทริกเกอร์

ไปที่เว็บไซต์การสาธิต Privacy Sandbox ซึ่งจะทริกเกอร์รายงานการรวมส่วนตัว คุณสามารถดูรายงานได้ที่ chrome://private-aggregation-internals

chrome private aggregationinternals

หากรายงานอยู่ในสถานะ "รอดำเนินการ" คุณสามารถเลือกรายงานและคลิก "ส่งรายงานที่เลือก"

ส่งรายงานการรวบรวมส่วนตัว

2.2 สร้างรายงานแบบรวมสำหรับการแก้ไขข้อบกพร่อง

ใน 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 ได้

รายงานการรวบรวมแบบส่วนตัว

วาง "Report Body" ของ 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 แยกวิเคราะห์คีย์ที่เก็บข้อมูลจากรายงานการแก้ไขข้อบกพร่อง

บริการรวมต้องมี 2 ไฟล์เมื่อทำการรวมกลุ่ม รายงานแบบรวมและไฟล์โดเมนเอาต์พุต ไฟล์โดเมนเอาต์พุตมีคีย์ที่คุณต้องการเรียกคืนจากรายงานที่รวบรวมได้ หากต้องการสร้างไฟล์ output_domain.avro คุณต้องมีคีย์ที่เก็บข้อมูลที่ดึงมาจากรายงานได้

คีย์ที่เก็บข้อมูลออกแบบโดยผู้เรียกใช้ API และการสาธิตมีคีย์ตัวอย่างที่สร้างไว้ล่วงหน้า เนื่องจากเดโมได้เปิดใช้โหมดแก้ไขข้อบกพร่องสําหรับการรวมส่วนตัวแล้ว คุณจึงแยกวิเคราะห์เพย์โหลดการแก้ไขข้อบกพร่องแบบข้อความล้างการแก้ไขข้อบกพร่องจาก "เนื้อความของรายงาน" เพื่อเรียกข้อมูลคีย์ที่เก็บข้อมูลได้ อย่างไรก็ตาม ในกรณีนี้ การสาธิต Privacy Sandbox ของเว็บไซต์จะสร้างคีย์ที่เก็บข้อมูล เนื่องจากการรวมส่วนตัวของเว็บไซต์นี้อยู่ในโหมดแก้ไขข้อบกพร่อง คุณจึงใช้ debug_cleartext_payload จาก "เนื้อความของรายงาน" เพื่อรับคีย์ที่เก็บข้อมูลได้

คัดลอก debug_cleartext_payload จากเนื้อความของรายงาน

แก้ไขข้อบกพร่องเพย์โหลดข้อความที่โอนหรือจัดเก็บได้โดยไม่ต้องเข้ารหัสจากเนื้อหาของรายงาน

เปิดเครื่องมือแก้ไขข้อบกพร่องตัวถอดรหัสเพย์โหลดสำหรับ Private Aggregation แล้ววาง 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 สร้างรายงานสรุปโดยใช้เครื่องมือทดสอบในเครื่อง

เราจะใช้ LocalTestingTool_{version}.jar ที่ดาวน์โหลดไว้ในส่วน 1.1 เพื่อสร้างรายงานสรุป ใช้คำสั่งต่อไปนี้ คุณควรแทนที่ 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

สำหรับ Codelab เราจะใช้เครื่องมือ 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. การติดตั้งใช้งานบริการรวบรวม

หากต้องการทำให้ Aggregation Service ใช้งานได้ ให้ทำตามขั้นตอนต่อไปนี้

ขั้นตอนที่ 3 การติดตั้งใช้งานบริการ Aggregation: ทำให้ Aggregation Service ใช้งานได้บน AWS
ขั้นตอนที่ 3.1 โคลนที่เก็บบริการรวม
ขั้นตอนที่ 3.2 ดาวน์โหลดทรัพยากร Dependency ที่สร้างไว้ล่วงหน้า
ขั้นตอนที่ 3.3 สร้างสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
ขั้นตอนที่ 3.4 ทำให้บริการการรวมใช้งานได้

3.1 โคลนที่เก็บของบริการ Aggregation

ในสภาพแวดล้อมในเครื่องของคุณ ให้โคลนที่เก็บ GitHub ของ Aggregation Service

git clone https://github.com/privacysandbox/aggregation-service.git

3.2 ดาวน์โหลดทรัพยากร Dependency ที่สร้างไว้ล่วงหน้า

เมื่อโคลนที่เก็บของ Aggregation Service แล้ว ให้ไปที่โฟลเดอร์ 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 แล้วกด i เพื่อ input เพื่อแก้ไขไฟล์

vim main.tf

ยกเลิกการแสดงความคิดเห็นโค้ดในช่องสีแดงโดยการนำ # ออกและอัปเดตชื่อที่เก็บข้อมูลและชื่อคีย์

สำหรับ AWS main.tf

ไฟล์ AWS หลัก

โค้ดที่ไม่มีความคิดเห็นควรมีลักษณะดังนี้

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 และกด i สำหรับ input เพื่อแก้ไขไฟล์

vim dev.auto.tfvars

อัปเดตช่องในช่องสีแดงต่อไปนี้ด้วยพารามิเตอร์ AWS ARN ที่ถูกต้องซึ่งมีให้ระหว่างการเริ่มต้นใช้งาน Aggregation Service, สภาพแวดล้อม และอีเมลแจ้งเตือน

แก้ไขไฟล์ dev auto tfvarsfile

เมื่ออัปเดตเสร็จแล้ว ให้กด esc -> :wq! การดำเนินการนี้จะบันทึกไฟล์ dev.auto.tfvars และควรมีลักษณะคล้ายรูปภาพต่อไปนี้

อัปเดตไฟล์ dev auto tfvarsfile แล้ว

3.4. ทำให้บริการการรวมใช้งานได้

หากต้องการทำให้ Aggregation Service ใช้งานได้ ให้เริ่มต้น Terraform ในโฟลเดอร์ /terraform/aws/environments/dev เดียวกัน

terraform init

การดำเนินการนี้ควรแสดงผลลัพธ์ที่คล้ายกับรูปภาพต่อไปนี้:

เทอร์ราฟอร์มินิต

เมื่อเริ่มต้น Transform แล้ว ให้สร้างแผนดำเนินการของ Terraform ซึ่งแสดงจำนวนทรัพยากรที่จะเพิ่มและข้อมูลเพิ่มเติมอื่นๆ ที่คล้ายกับรูปภาพต่อไปนี้

terraform plan

คุณดูได้ในสรุป "แผน" ต่อไปนี้ หากเป็นการทำให้ใช้งานได้ใหม่ คุณควรเห็นจำนวนทรัพยากรที่จะเพิ่มโดยมี 0 เพื่อเปลี่ยน และ 0 ที่ต้องการทำลาย

Terraformplan

เมื่อดำเนินการเสร็จแล้ว คุณจะดำเนินการต่อเพื่อใช้ Terraform ได้

terraform apply

เมื่อได้รับข้อความแจ้งให้ยืนยันการดำเนินการโดย Geoform ให้ป้อน yes ลงในค่า

แสดงพรอมต์โดยใช้ terraform

เมื่อ terraform apply เสร็จสิ้นแล้ว ระบบจะแสดงผลปลายทางต่อไปนี้สำหรับ createJob และ getJob frontend_api_id ที่คุณต้องอัปเดตใน Postman ในส่วน 1.9 จะแสดงผลด้วย

ใช้ terraform แบบเติมข้อความ

4. การสร้างอินพุตบริการรวบรวม

ดำเนินการต่อเพื่อสร้างรายงาน AVRO สำหรับการจัดกลุ่มในบริการรวบรวมข้อมูล

ขั้นตอนที่ 4 การสร้างอินพุตบริการรวบรวม: สร้างรายงานบริการรวบรวมข้อมูลที่แยกเป็นชุดสำหรับบริการรวบรวมข้อมูล
ขั้นตอนที่ 4.1 รายงานทริกเกอร์
ขั้นตอนที่ 4.2 รวบรวมรายงานที่รวบรวมได้
ขั้นตอนที่ 4.3 แปลงรายงานเป็น AVRO
ขั้นตอนที่ 4.4 สร้างโดเมนเอาต์พุต AVRO

4.1 รายงานทริกเกอร์

ไปที่เว็บไซต์การสาธิต Privacy Sandbox ซึ่งจะทริกเกอร์รายงานการรวมส่วนตัว คุณสามารถดูรายงานได้ที่ chrome://private-aggregation-internals

chrome private aggregationinternals

หากรายงานอยู่ในสถานะ "รอดำเนินการ" คุณสามารถเลือกรายงานและคลิก "ส่งรายงานที่เลือก"

ส่งรายงานการรวบรวมส่วนตัว

4.2 รวบรวมรายงานที่รวบรวมได้

รวบรวมรายงานที่รวบรวมได้จากปลายทางของ .well-known ของ API ที่เกี่ยวข้อง

  • การรวมแบบส่วนตัว
    [reporting-origin] /.well-known/private-aggregation/report-shared-storage
  • การรายงานการระบุแหล่งที่มา - รายงานสรุป
    [reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution

สำหรับ Codelab นี้ คุณจะดำเนินการรวบรวมรายงานด้วยตนเอง ในการใช้งานจริง เทคโนโลยีโฆษณาควรรวบรวมและแปลงรายงานแบบเป็นโปรแกรม

ใน 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 ได้

รายงานการรวบรวมแบบส่วนตัว

วาง "Report Body" ของ 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 คุณต้องมีคีย์ที่เก็บข้อมูลที่ดึงมาจากรายงานได้

คีย์ที่เก็บข้อมูลออกแบบโดยเทคโนโลยีโฆษณา อย่างไรก็ตาม ในกรณีนี้ เว็บไซต์การสาธิต Privacy Sandbox จะสร้างคีย์ที่เก็บข้อมูล เนื่องจากการรวมส่วนตัวของเว็บไซต์นี้อยู่ในโหมดแก้ไขข้อบกพร่อง คุณจึงใช้ debug_cleartext_payload จาก "เนื้อความของรายงาน" เพื่อรับคีย์ที่เก็บข้อมูลได้

คัดลอก debug_cleartext_payload จากเนื้อความของรายงานได้เลย

แก้ไขข้อบกพร่องเพย์โหลดข้อความที่โอนหรือจัดเก็บได้โดยไม่ต้องเข้ารหัสจากเนื้อหาของรายงาน

เปิด goo.gle/ags-payload-decoder แล้ววาง debug_cleartext_payload ในช่อง "INPUT" แล้วคลิก "ถอดรหัส"

โปรแกรมถอดรหัสเพย์โหลด

หน้านี้จะแสดงค่าทศนิยมของคีย์ที่เก็บข้อมูล ต่อไปนี้คือตัวอย่างคีย์ที่เก็บข้อมูล

ผลลัพธ์การถอดรหัสเพย์โหลด

ตอนนี้เรามีคีย์ที่เก็บข้อมูลแล้ว ให้ไปสร้าง 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 แล้ววางลงในตัวแปรร่วมของ Postman frontend_api_id ที่คุณตั้งค่าในส่วนเบื้องต้น 1.9

ขั้นตอนที่ 5 การใช้บริการรวม: ใช้ Aggregation Service API เพื่อสร้างรายงานสรุปและตรวจสอบรายงานสรุป
ขั้นตอนที่ 5.1 การใช้ createJob Endpoint เพื่อจัดกลุ่ม
ขั้นตอนที่ 5.2 การใช้ปลายทาง getJob เพื่อเรียกสถานะกลุ่ม
ขั้นตอนที่ 5.3 การตรวจสอบรายงานสรุป

5.1 กำลังใช้ปลายทาง createJob เพื่อจัดกลุ่ม

ใน Postman ให้เปิดคอลเล็กชัน "Privacy Sandbox" แล้วเลือก "createJob"

เลือก "เนื้อหา" และเลือก "ข้อมูลดิบ" เพื่อวางเพย์โหลดคำขอ

เนื้อหาคำขอ 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 คุณควรได้รับการตอบกลับ HTTP 202 เมื่อบริการรวบรวมข้อมูลได้รับการยอมรับแล้ว ดูรหัสการตอบกลับที่เป็นไปได้อื่นๆ ในรหัสการตอบกลับ HTTP

Postman createJob requeststatus

5.2 การใช้ปลายทาง getJob เพื่อเรียกสถานะกลุ่ม

หากต้องการตรวจสอบสถานะของคำของาน ให้ใช้ปลายทาง getJob เลือก "getJob" ในคอลเล็กชัน "Privacy Sandbox"

ใน "Params" ให้อัปเดตค่า jobs_request_id เป็น job_request_id ที่ส่งในคำขอ createJob

getJobrequest ของบุรุษไปรษณีย์

ผลลัพธ์ของ getJob ควรแสดงสถานะคำของานด้วยสถานะ HTTP เป็น 200 คำขอ "Body" มีข้อมูลที่จำเป็น เช่น job_status, return_message และ error_messages (หากงานมีข้อผิดพลาด)

สถานะคำขอ getJob ของบุรุษไปรษณีย์

เนื่องจากเว็บไซต์การรายงานของรายงานเดโมที่สร้างขึ้นแตกต่างจากเว็บไซต์ที่เริ่มต้นใช้งานในรหัส 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 - คีย์ที่เก็บข้อมูลจะมีให้ใช้งานในไฟล์ AVRO เป็นเอาต์พุต_domain