1. ข้อกำหนดเบื้องต้น
ในการทํา Codelab นี้ คุณต้องมีข้อกําหนดเบื้องต้นบางอย่าง ระบบจะทําเครื่องหมายข้อกําหนดแต่ละข้อว่าจําเป็นสําหรับ "การทดสอบในพื้นที่" หรือ "บริการรวบรวมข้อมูล"
1.1 ดาวน์โหลดเครื่องมือทดสอบในเครื่อง (การทดสอบในเครื่อง)
การทดสอบในเครื่องจะต้องดาวน์โหลดเครื่องมือทดสอบในเครื่อง เครื่องมือจะสร้างรายงานสรุปจากรายงานการแก้ไขข้อบกพร่องที่ไม่ได้เข้ารหัส
เครื่องมือทดสอบในเครื่องพร้อมให้ดาวน์โหลดในที่เก็บ JAR ของ Lambda ใน GitHub โดยควรตั้งชื่อว่า LocalTestingTool_{version}.jar
1.2 ยืนยันว่าได้ติดตั้ง JAVA JRE แล้ว (บริการทดสอบและรวบรวมข้อมูลในเครื่อง)
เปิด "Terminal" และใช้ java --version
เพื่อตรวจสอบว่าเครื่องของคุณติดตั้ง Java หรือ openJDK ไว้หรือไม่
การตรวจสอบเวอร์ชัน JRE ของ Java โดยใช้ "java --version"
หากยังไม่ได้ติดตั้ง คุณสามารถดาวน์โหลดและติดตั้งได้จากเว็บไซต์ Java หรือเว็บไซต์ openJDK
1.3 ดาวน์โหลดเครื่องมือแปลงรายงานที่รวมได้ (บริการทดสอบและรวมข้อมูลในเครื่อง)
คุณสามารถดาวน์โหลดสําเนาเครื่องมือแปลงรายงานที่รวบรวมข้อมูลได้ได้จากที่เก็บ GitHub ของเดโม Privacy Sandbox
1.4. เปิดใช้ Ad Privacy API (บริการทดสอบและรวบรวมข้อมูลในเครื่อง)
ไปที่ chrome://settings/adPrivacy
ในเบราว์เซอร์ แล้วเปิดใช้ Ad Privacy API ทั้งหมด
ยืนยันว่าได้เปิดใช้คุกกี้ของบุคคลที่สามแล้ว
ในเบราว์เซอร์ ให้ไปที่ chrome://settings/cookies
แล้วเลือก "บล็อกคุกกี้ของบุคคลที่สามในโหมดไม่ระบุตัวตน"
การตั้งค่าคุกกี้ของบุคคลที่สามใน Chrome
1.5. การลงทะเบียนเว็บและ Android (บริการรวมข้อมูล)
หากต้องการใช้ Privacy Sandbox API ในสภาพแวดล้อมเวอร์ชันที่ใช้งานจริง โปรดตรวจสอบว่าคุณได้ลงทะเบียนและการรับรองทั้งสำหรับ Chrome และ Android แล้ว
สำหรับการทดสอบในเครื่อง คุณสามารถปิดใช้การลงทะเบียนได้โดยใช้Flag ของ Chrome และ Switch CLI
หากต้องการใช้ Flag ของ Chrome สําหรับการสาธิต ให้ไปที่ chrome://flags/#privacy-sandbox-enrollment-overrides
แล้วอัปเดตการลบล้างด้วยเว็บไซต์ของคุณ หรือหากจะใช้เว็บไซต์เดโมของเรา ก็ไม่จำเป็นต้องอัปเดต
การลงทะเบียน Privacy Sandbox ลบล้าง Flag ของ Chrome
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 ในการจัดการคําขอ
สร้างพื้นที่ทํางานโดยไปที่รายการการนําทางด้านบน "พื้นที่ทํางาน" แล้วเลือก "สร้างพื้นที่ทํางาน"
พื้นที่ทํางาน Postman
เลือก "พื้นที่ทํางานว่าง" คลิกถัดไป แล้วตั้งชื่อเป็น "Sandbox ความเป็นส่วนตัว" เลือก "ส่วนตัว" แล้วคลิก "สร้าง"
ดาวน์โหลดไฟล์การกำหนดค่า JSON และสภาพแวดล้อมส่วนกลางของพื้นที่ทำงานที่กำหนดค่าไว้ล่วงหน้า
นําเข้าไฟล์ JSON ไปยัง "พื้นที่ทํางานของฉัน" โดยใช้ปุ่ม "นําเข้า"
นําเข้าไฟล์ JSON ของ Postman
ซึ่งจะสร้างคอลเล็กชัน Privacy Sandbox ให้คุณพร้อมกับคําขอ HTTP createJob
และ getJob
คอลเล็กชันที่นำเข้าจาก Postman
อัปเดต "คีย์การเข้าถึง" และ "คีย์ลับ" ของ AWS ผ่าน "ดูข้อมูลโดยย่อของสภาพแวดล้อม"
ภาพรวมคร่าวๆ ของสภาพแวดล้อม Postman
คลิก "แก้ไข" และอัปเดต "ค่าปัจจุบัน" ของทั้ง "access_key" และ "secret_key" โปรดทราบว่า frontend_api_id
จะระบุไว้ในส่วนที่ 3.1.4 ของเอกสารนี้ และเราขอแนะนำให้ใช้ภูมิภาค us-east-1 อย่างไรก็ตาม หากต้องการทำให้ใช้งานได้ในภูมิภาคอื่น ให้ตรวจสอบว่าคุณได้คัดลอก AMI ที่เผยแพร่แล้วลงในบัญชีหรือสร้างด้วยตนเองโดยใช้สคริปต์ที่ให้มา
ตัวแปรส่วนกลางของ Postman
Postman แก้ไขตัวแปรส่วนกลาง
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
หากรายงานมีสถานะเป็น "รอดำเนินการ" คุณจะเลือกรายงานแล้วคลิก "ส่งรายงานที่เลือก" ได้
ส่งรายงานการรวมข้อมูลส่วนตัว
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
รายงานการรวมข้อมูลส่วนตัว
วาง 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
จากเนื้อหารายงาน
แก้ไขข้อบกพร่องของเพย์โหลดแบบข้อความธรรมดาจากเนื้อหารายงาน
เปิดเครื่องมือโปรแกรมถอดรหัสเพย์โหลดสำหรับการแก้ไขข้อบกพร่องสำหรับการรวบรวมข้อมูลส่วนตัว แล้ววาง 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
เมื่อดำเนินการเสร็จสิ้น
ไฟล์ 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 ให้ไปที่
cd <repository_root>/terraform/aws
ใน
ให้เรียกใช้ download_prebuilt_dependencies.sh
bash download_prebuilt_dependencies.sh
3.3. สร้างสภาพแวดล้อมการพัฒนา
สร้างสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์ใน
สร้างโฟลเดอร์ชื่อ dev
mkdir dev
คัดลอกเนื้อหาของโฟลเดอร์ demo
ไปยังโฟลเดอร์ dev
cp -R demo/* dev
ย้ายไปยังโฟลเดอร์ dev
cd dev
อัปเดตไฟล์ main.tf
แล้วกด i
สำหรับ input
เพื่อแก้ไขไฟล์
vim main.tf
ยกเลิกการคอมเมนต์โค้ดในช่องสีแดงโดยนำ # ออกและอัปเดตชื่อที่เก็บข้อมูลและคีย์
สำหรับ AWS main.tf
ไฟล์ 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 ที่ถูกต้องซึ่งระบุไว้ในระหว่างการเริ่มต้นใช้งาน สภาพแวดล้อม และอีเมลแจ้งเตือนของบริการรวมข้อมูล
แก้ไขไฟล์ tfvars อัตโนมัติสำหรับนักพัฒนาซอฟต์แวร์
เมื่ออัปเดตเสร็จแล้ว ให้กด esc
-> :wq!
ซึ่งจะเป็นการบันทึกไฟล์ dev.auto.tfvars
และควรมีลักษณะดังภาพต่อไปนี้
อัปเดตไฟล์ tfvars ของ dev auto
3.4. ติดตั้งใช้งานบริการรวมข้อมูล
หากต้องการทำให้บริการรวมข้อมูลใช้งานได้ ให้เริ่มต้น Terraform ในโฟลเดอร์
เดียวกัน
terraform init
ซึ่งจะแสดงผลลัพธ์ที่คล้ายกับรูปภาพต่อไปนี้
Terraform init.
เมื่อเริ่มต้น Terraform แล้ว ให้สร้างแผนการดำเนินการของ Terraform ซึ่งจะแสดงจํานวนทรัพยากรที่จะเพิ่มและข้อมูลเพิ่มเติมอื่นๆ คล้ายกับรูปภาพต่อไปนี้
terraform plan
คุณจะเห็นข้อมูลสรุป "แผน" ต่อไปนี้ หากเป็นการทำให้ใช้งานได้เป็นครั้งแรก คุณควรเห็นจํานวนทรัพยากรที่จะเพิ่ม โดยมี 0 สำหรับเปลี่ยนและ 0 สำหรับทำลาย
แผน Terraform
เมื่อดำเนินการเสร็จแล้ว ให้ใช้ Terraform ต่อ
terraform apply
เมื่อได้รับข้อความแจ้งให้ยืนยันการดำเนินการโดย Terraform ให้ป้อน 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
หากรายงานมีสถานะเป็น "รอดำเนินการ" คุณจะเลือกรายงานแล้วคลิก "ส่งรายงานที่เลือก" ได้ "
ส่งรายงานการรวมข้อมูลส่วนตัว
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
รายงานการรวมข้อมูลส่วนตัว
วาง 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
จากเนื้อหารายงาน
แก้ไขข้อบกพร่องของเพย์โหลดแบบข้อความธรรมดาจากเนื้อหารายงาน
เปิด 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
แล้ววางลงในตัวแปรส่วนกลาง frontend_api_id
ของ Postman ที่คุณตั้งค่าไว้ในส่วนข้อกําหนดเบื้องต้น 1.9
ขั้นตอนที่ 5 การใช้งานบริการรวมข้อมูล: ใช้ Aggregation Service API เพื่อสร้างรายงานสรุปและตรวจสอบรายงานสรุป
ขั้นตอนที่ 5.1 การใช้ปลายทาง createJob เพื่อประมวลผลแบบเป็นกลุ่ม
ขั้นตอนที่ 5.2 การใช้ปลายทาง getJob เพื่อดึงข้อมูลสถานะการประมวลผลกลุ่ม
ขั้นตอนที่ 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_blob_prefixes": [
"<report_folder>/<report_name-1>/",
"<report_folder>/<report_name-2>/",
"<report_folder>/<report_name>.avro"
], // Mutually exclusive to input_data_blob_prefix as of v2.11.0
"input_data_bucket_name": "<bucket_name>",
"output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
"output_data_bucket_name": "<bucket_name>",
"job_parameters": {
"output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
"output_domain_bucket_name": "<bucket_name>",
"attribution_report_to": "<reporting origin of report>",
"reporting_site": "<domain of reporting origin(s) of report>", // Mutually exclusive to attribution_report_to as of v2.7.0
"report_error_threshold_percentage": "10",
"debug_run": "true"
}
}
เมื่อคลิก "ส่ง" ระบบจะสร้างงานที่มี job_request_id
คุณควรได้รับการตอบกลับ HTTP 202 เมื่อบริการรวบรวมข้อมูลยอมรับคำขอแล้ว ดูโค้ดตอบกลับอื่นๆ ที่เป็นไปได้ได้ในโค้ดตอบกลับ HTTP
สถานะคําขอ createJob ของ Postman
5.2 การใช้ปลายทาง getJob เพื่อดึงข้อมูลสถานะการประมวลผลเป็นกลุ่ม
หากต้องการตรวจสอบสถานะคำของาน คุณสามารถใช้ปลายทาง getJob
เลือก "getJob" ในคอลเล็กชัน "Sandbox ความเป็นส่วนตัว"
ใน "Params" ให้อัปเดตค่า job_request_id เป็น job_request_id
ที่ส่งในคําขอ createJob
postman getJob request
ผลลัพธ์ของ getJob
ควรแสดงสถานะคำของานของคุณที่มีสถานะ HTTP 200 คําขอ "Body" มีข้อมูลที่จําเป็น เช่น job_status
, return_message
และ error_messages
(หากงานเกิดข้อผิดพลาด)
postman getJob request status
เนื่องจากเว็บไซต์การรายงานของรายงานเดโมที่สร้างขึ้นแตกต่างจากเว็บไซต์ที่เริ่มต้นใช้งานในรหัส 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_blob_prefixes": [ // Mutually exclusive to input_data_blob_prefix as of v2.11.0
"<report_folder>/<report_name-1>/",
"<report_folder>/<report_name-2>/",
"<report_folder>/<report_name>.avro"
],
"input_data_bucket_name": "<input_bucket_name>",
"output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
"output_data_bucket_name": "<output_bucket_name>",
"postback_url": "",
"result_info": {
"return_code": "PRIVACY_BUDGET_AUTHORIZATION_ERROR",
"return_message": "Aggregation job successfully processed",
"error_summary": {
"error_counts": [],
"error_messages": []
},
"finished_at": "2023-12-07T22:51:10.517730898Z"
},
"job_parameters": {
"debug_run": "true",
"output_domain_bucket_name": "<output_domain_bucket_name>",
"output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
"attribution_report_to": "https://privacy-sandbox-demos-dsp.dev",
"reporting_site": "<domain of reporting origin(s) of report>", // Mutually exclusive to attribution_report_to as of v2.7.0
},
"request_processing_started_at": "2023-12-07T22:51:06.034472697Z"
}
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 ของ output_domain