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

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

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

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

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

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

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

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

กำลังตรวจสอบเวอร์ชัน JRE ของ Java โดยใช้ java\n--version

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

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

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

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

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

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

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

third party cookie chromesetting

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

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

สำหรับการทดสอบในเครื่อง คุณสามารถปิดใช้การลงทะเบียนได้โดยใช้Flag ของ Chrome และ Switch CLI

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

privacy sandbox enrollment override chromeflag

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

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

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

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

1.8. Terraform (บริการรวมข้อมูล)

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

ดาวน์โหลด Terraform Binary ลงในสภาพแวดล้อมในเครื่อง

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

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

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

terraform -v

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

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

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

postmanworkspace

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

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

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

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

ซึ่งจะสร้างคอลเล็กชัน Privacy Sandbox ให้คุณพร้อมกับคําขอ HTTP createJob และ getJob

postman importedcollection

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

ภาพรวมสภาพแวดล้อมของ Postman

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

postman globalvariables

postman edit globalvariables

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

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

ขั้นตอนใน Codelab

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

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

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

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

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

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

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

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

chrome private aggregationinternals

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

send private aggregationreport

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

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

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

private aggregationreport

วาง 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

2.3 แยกวิเคราะห์คีย์ที่เก็บข้อมูลจากรายงานการแก้ไขข้อบกพร่อง

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

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

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

แก้ไขข้อบกพร่องเพย์โหลดแบบข้อความธรรมดาจาก reportbody

เปิดเครื่องมือโปรแกรมถอดรหัสเพย์โหลดสำหรับการแก้ไขข้อบกพร่องสำหรับการรวบรวมข้อมูลส่วนตัว แล้ววาง debug_cleartext_payload ในช่อง "INPUT" แล้วคลิก "Decode"

payloaddecoder

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

payload decoderresult

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

ไฟล์ 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. การติดตั้งใช้งานบริการรวมข้อมูล

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

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

3.1 โคลนที่เก็บบริการรวมข้อมูล

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

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

3.2 ดาวน์โหลด Dependency ที่คอมไพล์ไว้ล่วงหน้า

เมื่อโคลนที่เก็บบริการรวบรวมข้อมูลแล้ว ให้ไปที่โฟลเดอร์ 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

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 ที่ถูกต้องซึ่งระบุไว้ในระหว่างการเริ่มต้นใช้งาน สภาพแวดล้อม และอีเมลแจ้งเตือนของบริการรวบรวมข้อมูล

edit dev auto tfvarsfile

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

updated dev auto tfvarsfile

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

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

terraform init

ซึ่งจะแสดงผลลัพธ์ที่คล้ายกับรูปภาพต่อไปนี้

terraforminit

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

terraform plan

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

terraformplan

เมื่อดำเนินการเสร็จแล้ว ให้ใช้ Terraform ต่อ

terraform apply

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

terraform applyprompt

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

terraform applycomplete

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

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

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

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

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

chrome private aggregationinternals

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

send private aggregationreport

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

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

private aggregationreport

วาง JSON "เนื้อหารายงาน" ในไฟล์ 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 จากเนื้อหารายงาน

แก้ไขข้อบกพร่องเพย์โหลดแบบข้อความธรรมดาจาก reportbody

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

payloaddecoder

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

payload decoderresult

เมื่อเรามีคีย์ที่เก็บข้อมูลแล้ว ให้สร้าง 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 เพื่อประมวลผลแบบเป็นกลุ่ม
ขั้นตอนที่ 5.2 การใช้ปลายทาง getJob เพื่อดึงข้อมูลสถานะการประมวลผลกลุ่ม
ขั้นตอนที่ 5.3 การตรวจสอบรายงานสรุป

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

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

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

postman createJob requestbody

สคีมาเพย์โหลด createJob มีอยู่ใน github และมีลักษณะคล้ายกับตัวอย่างต่อไปนี้ แทนที่ <> ด้วยช่องที่เหมาะสม

{
  "job_request_id": "<job_request_id>",
  "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
  "input_data_bucket_name": "<bucket_name>",
  "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
  "output_data_bucket_name": "<bucket_name>",
  "job_parameters": {
    "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
    "output_domain_bucket_name": "<bucket_name>",
    "attribution_report_to": "<reporting origin of report>",
    "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

เมื่อคลิก "ส่ง" ระบบจะสร้างงานที่มี job_request_id คุณควรได้รับการตอบกลับ HTTP 202 เมื่อบริการรวบรวมข้อมูลยอมรับคำขอแล้ว ดูโค้ดตอบกลับอื่นๆ ที่เป็นไปได้ได้ในโค้ดการตอบกลับ HTTP

postman createJob requeststatus

5.2 การใช้ปลายทาง getJob เพื่อดึงข้อมูลสถานะการประมวลผลเป็นกลุ่ม

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

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

postman getJobrequest

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

postman getJob requeststatus

เนื่องจากเว็บไซต์การรายงานของรายงานเดโมที่สร้างขึ้นแตกต่างจากเว็บไซต์ที่เริ่มต้นใช้งานในรหัส AWS คุณจึงอาจได้รับการตอบกลับพร้อม PRIVACY_BUDGET_AUTHORIZATION_ERROR return_code กรณีนี้เป็นเรื่องปกติเนื่องจากเว็บไซต์ของแหล่งที่มาของการรายงานของรายงานไม่ตรงกับเว็บไซต์การรายงานที่เริ่มต้นใช้งานสำหรับรหัส AWS

{
    "job_status": "FINISHED",
    "request_received_at": "2023-12-07T22:50:58.830956Z",
    "request_updated_at": "2023-12-07T22:51:10.526326456Z",
    "job_request_id": "<job_request_id>",
    "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
    "input_data_bucket_name": "<input_bucket_name>",
    "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
    "output_data_bucket_name": "<output_bucket_name>",
    "postback_url": "",
    "result_info": {
        "return_code": "PRIVACY_BUDGET_AUTHORIZATION_ERROR",
        "return_message": "Aggregation job successfully processed",
        "error_summary": {
            "error_counts": [],
            "error_messages": []
        },
        "finished_at": "2023-12-07T22:51:10.517730898Z"
    },
    "job_parameters": {
        "debug_run": "true",
        "output_domain_bucket_name": "<output_domain_bucket_name>",
        "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
        "attribution_report_to": "https://privacy-sandbox-demos-dsp.dev",
        "reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
    },
    "request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}

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

เมื่อได้รับรายงานสรุปในที่เก็บข้อมูล S3 เอาต์พุตแล้ว คุณจะดาวน์โหลดรายงานนี้ลงในสภาพแวดล้อมในเครื่องได้ รายงานสรุปอยู่ในรูปแบบ AVRO และสามารถแปลงกลับเป็น JSON ได้ คุณสามารถใช้ aggregatable_report_converter.jar เพื่ออ่านรายงานโดยใช้คําสั่งต่อไปนี้

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

ซึ่งจะแสดงผล JSON ของค่ารวมของคีย์ที่เก็บข้อมูลแต่ละรายการซึ่งมีลักษณะคล้ายกับภาพต่อไปนี้

summaryreport

หากคำขอ createJob ของคุณมี debug_run เป็น true คุณจะได้รับการรายงานสรุปในโฟลเดอร์แก้ไขข้อบกพร่องที่อยู่ใน output_data_blob_prefix รายงานอยู่ในรูปแบบ AVRO และสามารถแปลงเป็น JSON โดยใช้คําสั่งก่อนหน้า

รายงานมีคีย์ที่เก็บข้อมูล เมตริกที่ไม่มีสัญญาณรบกวน และสัญญาณรบกวนซึ่งเพิ่มลงในเมตริกที่ไม่มีสัญญาณรบกวนเพื่อสร้างรายงานสรุป รายงานจะมีลักษณะคล้ายกับรูปภาพต่อไปนี้

debug summaryreport

คําอธิบายประกอบยังมี in_reports และ in_domain ซึ่งหมายถึง

  • in_reports - คีย์ที่เก็บข้อมูลจะอยู่ในรายงานที่รวบรวมได้
  • in_domain - คีย์ที่เก็บข้อมูลอยู่ในไฟล์ AVRO ของ output_domain