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

1. สิ่งที่ต้องดำเนินการก่อน

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

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

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

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

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

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

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

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

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

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

1.4 เปิดใช้ Ad Privacy API (การทดสอบและบริการรวมข้อมูลในพื้นที่)

ในเบราว์เซอร์ ให้ไปที่ chrome://settings/adPrivacy แล้วเปิดใช้ Ad Privacy API ทั้งหมด

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

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

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

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

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

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

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

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

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

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

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

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

AWS มอบสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ที่เรียกว่า Nitro Enclaves ตรวจสอบว่าคุณมีบัญชี 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 terform (บริการรวบรวม)

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

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

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

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

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

terraform -v

1.9 Postman (สำหรับ AWS บริการรวมข้อมูล)

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

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

Postmanworkspace

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

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

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

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

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

คอลเล็กชันที่นำเข้า

อัปเดต "คีย์การเข้าถึง" และ "คีย์ลับ" ของ AWS ผ่าน "ดูสภาพแวดล้อมอย่างรวดเร็ว"

มุมมองด่วนเกี่ยวกับสภาพแวดล้อมของบุรุษไปรษณีย์

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

ตัวแปรสากลสำหรับโพสต์แมน

Postman แก้ไข Globalvariables

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

aggregationinternals ส่วนตัวของ Chrome

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

ส่งรายงานการรวมข้อมูลแบบส่วนตัว

2.2 สร้างรายงานที่รวบรวมข้อมูลได้เพื่อแก้ไขข้อบกพร่อง

ใน chrome://private-aggregation-internals ให้คัดลอก "Report Body" ที่ได้รับในปลายทาง [reporting-origin]/.well-known/private-aggregation/report-shared-storage

ตรวจสอบว่าใน "Report Body" aggregation_coordinator_origin มี https://publickeyservice.msmt.aws.privacysandboxservices.com ซึ่งหมายความว่ารายงานดังกล่าวเป็นรายงาน AWS ที่รวบรวมได้

รายงานการรวมข้อมูลส่วนตัว

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

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

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

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

ดีบักเพย์โหลด cleartext จาก reportbody

เปิดเครื่องมือ Debug payload decoder for Private Aggregation แล้ววาง debug_cleartext_payload ในช่อง "INPUT" แล้วคลิก "Decode"

ตัวถอดรหัสเพย์โหลด

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

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

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 เ��ื่อการดำเนินการนี้เสร็จสมบูรณ์

รายงานสรุปการทดสอบในเครื่อง avrofile

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. การทำให้บริการรวบรวมข้อมูลใช้งานได้

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

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

3.1 โคลนที่เก็บ Aggregation Service

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

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

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

สำหรับ AWS main.tf

Tffile หลักของ 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

ซึ่งควรให้ผลลัพธ์ที่คล้ายกับรูปภาพต่อไปนี้

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

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

terraform plan

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

เทอร์ราฟอร์มแพลน

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

terraform apply

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

Terraform Applyprompt

เมื่อ 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

aggregationinternals ส่วนตัวของ Chrome

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

ส่งรายงานการรวมข้อมูลแบบส่วนตัว

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 ให้คัดลอก "Report Body" ที่ได้รับในปลายทาง [reporting-origin]/.well-known/private-aggregation/report-shared-storage

ตรวจสอบว่าใน "Report Body" aggregation_coordinator_origin มี https://publickeyservice.msmt.aws.privacysandboxservices.com ซึ่งหมายความว่ารายงานดังกล่าวเป็นรายงาน AWS ที่รวบรวมได้

รายงานการรวมข้อมูลส่วนตัว

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

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

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

ดีบักเพย์โหลด cleartext จาก reportbody

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

ตัวถอดรหัสเพย์โหลด

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

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

ตอนนี้เรามีคีย์ที่เก็บข้อมูลแล้ว ต่อไปก็สร้างคีย์ output_domain.avro ได้เลย ตรวจสอบว่าคุณได้แทนที่ ด้วยคีย์ที่เก็บข้อมูลที่ดึงมา

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

สคริปต์จะสร้างไฟล์ output_domain.avro ในโฟลเดอร์ปัจจุบัน

4.5 ย้ายรายงานไปยังที่เก็บข้อมูล AWS

เมื่อสร้างรายงาน AVRO (จากส่วน 3.2.3) และโดเมนเอาต์พุต (จากส่วน 3.2.4) แล้ว โปรดย้ายโดเมนรายงานและโดเมนเอาต์พุตไปยังที่เก็บข้อมูล S3 การรายงาน

หากคุณตั้งค่า AWS CLI บนสภาพแวดล้อมในเครื่อง ให้ใช้คำสั่งต่อไปนี้เพื่อ��ัดลอกรายงานไปยังที่เก็บข้อมูล S3 และโฟลเดอร์รายงานที่เกี่ยวข้อง

aws s3 cp report.avro s3://<report_bucket_name>/<report_folder>/
aws s3 cp output_domain.avro s3://<report_bucket_name>/<output_domain_folder>/

5. การใช้บริการรวมข้อมูล

จาก terraform apply คุณจะได้รับ create_job_endpoint, get_job_endpoint และ frontend_api_id คัดลอก frontend_api_id ���ล���วว����������นตัวแปรร่วมของ Postman frontend_api_id ที่คุณตั้งค่าในส่วนที่ต้องมีเบื้องต้น 1.9

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

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

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

เลือก "Body" แล้วเลือก "raw" เพื่อวางเพย์โหลดคำขอ

เนื้อความคำขอ createJob ของ Postman

สคีมาเพย์โหลด 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

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

5.2 การใช้ getJob Endpoint เพื่อเรียกข้อมูลสถานะแบบกลุ่ม

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

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

getJobrequest บุรุษไปรษณีย์

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

สถานะคำขอ getJob ของ Postman

เนื่องจากเว็บไซต์การรายงานของรายงานเดโมที่สร้างขึ้นแตกต่างจากเว็บไซต์ที่คุณเริ่มต้นใช้งานบนรหัส AWS ของคุณ คุณจึงอาจได้รับการตอบกลับด้วยรหัส Return_code ของ PRIVACY_BUDGET_AUTHORIZATION_ERROR ซึ่งเป็นเรื่องปกติเนื่องจากเว็บไซต์ของต้นทางการรายงานไม่ตรงกับเว็บไซต์การรายงานที่เริ่มต้นใช้งานสำหรับรหัส 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"
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

5.3 การตรวจสอบรายงานสรุป

เมื่อได้รับรายงานสรุปในที่เก็บข้อมูลเอาต์พุต S3 แล้ว คุณจะดาวน์โหลดรายงานนี้ลงในสภาพแวดล้อมในเครื่องได้ รายงานสรุปอยู่ในรูปแบบ AAVRO และแปลงกลับเป็น 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 ของ exit_domain