Sử dụng Dịch vụ tổng hợp trên AWS

1. Điều kiện tiên quyết

Để thực hiện Lớp học lập trình này, bạn cần đáp ứng một số điều kiện tiên quyết. Mỗi yêu cầu đều được đánh dấu tương ứng cho biết yêu cầu đó là bắt buộc đối với "Kiểm thử cục bộ" hay "Dịch vụ tổng hợp".

1.1. Tải Công cụ kiểm thử cục bộ (Kiểm thử cục bộ) xuống

Để kiểm thử cục bộ, bạn cần tải Công cụ kiểm thử cục bộ xuống. Công cụ này sẽ tạo báo cáo tóm tắt từ các báo cáo gỡ lỗi chưa mã hoá.

Bạn có thể tải công cụ Kiểm thử cục bộ xuống trong Kho lưu trữ JAR Lambda trong GitHub. Bạn nên đặt tên là LocalTestingTool_{version}.jar.

1.2. Xác minh rằng bạn đã cài đặt JAVA JRE (Dịch vụ kiểm thử và tổng hợp cục bộ)

Mở "Terminal" (Thiết bị đầu cuối) rồi dùng java --version để kiểm tra xem máy của bạn đã cài đặt Java hay openJDK chưa.

Kiểm tra phiên bản jre java bằng cách sử dụng "java –version". Kiểm tra phiên bản jre java bằng cách sử dụng lệnh "java --version".

Nếu chưa cài đặt, bạn có thể tải xuống và cài đặt từ trang web Java hoặc trang web openJDK.

1.3. Tải Trình chuyển đổi báo cáo có thể tổng hợp xuống (Thử nghiệm cục bộ và Dịch vụ tổng hợp)

Bạn có thể tải bản sao của trình chuyển đổi báo cáo có thể tổng hợp xuống từ kho lưu trữ Giải pháp minh hoạ Hộp cát về quyền riêng tư trên GitHub.

1.4. Bật Ad Privacy API (Kiểm thử cục bộ và Dịch vụ tổng hợp)

Trên trình duyệt, hãy truy cập vào chrome://settings/adPrivacy rồi bật tất cả Ad Privacy API.

Xác minh rằng bạn đã bật cookie của bên thứ ba.

Trên trình duyệt, hãy chuyển đến biểu tượng chrome://settings/cookies rồi chọn "Chặn cookie của bên thứ ba ở Chế độ ẩn danh".

Chế độ cài đặt cookie của bên thứ ba trên Chrome. Chế độ cài đặt cookie của bên thứ ba trên Chrome.

1.5. Đăng ký trên web và Android (Dịch vụ tổng hợp)

Để sử dụng các API Hộp cát về quyền riêng tư trong môi trường phát hành chính thức, hãy đảm bảo rằng bạn đã hoàn tất quy trình đăng ký và chứng thực cho cả Chrome và Android.

Để kiểm thử cục bộ, bạn có thể tắt chế độ đăng ký bằng cách sử dụng cờ Chrome và công tắc CLI.

Để sử dụng cờ Chrome cho bản minh hoạ của chúng tôi, hãy chuyển đến chrome://flags/#privacy-sandbox-enrollment-overrides rồi cập nhật chế độ ghi đè bằng trang web của bạn. Nếu bạn sẽ sử dụng trang web minh hoạ của chúng tôi, thì không cần cập nhật.

Cờ ghi đè việc đăng ký Hộp cát về quyền riêng tư của Chrome. Cờ Chrome ghi đè việc đăng ký Hộp cát về quyền riêng tư.

1.6. Quy trình tham gia Dịch vụ tổng hợp (Dịch vụ tổng hợp)

Dịch vụ tổng hợp yêu cầu bạn tham gia vào các điều phối viên để có thể sử dụng dịch vụ này. Hoàn tất biểu mẫu Tham gia Dịch vụ tổng hợp bằng cách cung cấp địa chỉ trang web báo cáo, mã nhận dạng tài khoản AWS và các thông tin khác.

1.7. Nhà cung cấp dịch vụ đám mây (Dịch vụ tổng hợp)

Aggregation Service yêu cầu sử dụng Môi trường thực thi đáng tin cậy sử dụng môi trường đám mây. Dịch vụ tổng hợp được hỗ trợ trên Amazon Web Services (AWS) và Google Cloud (GCP). Lớp học lập trình này sẽ chỉ đề cập đến việc tích hợp AWS.

AWS cung cấp một Môi trường thực thi đáng tin cậy có tên là Nitro Enclaves. Xác minh rằng bạn có tài khoản AWS và làm theo hướng dẫn cài đặt và cập nhật AWS CLI để thiết lập môi trường AWS CLI.

Nếu AWS CLI của bạn là phiên bản mới, bạn có thể định cấu hình AWS CLI bằng hướng dẫn Định cấu hình CLI.

1.7.1. Tạo bộ chứa AWS S3

Tạo một bộ chứa AWS S3 để lưu trữ trạng thái Terraform và một bộ chứa S3 khác để lưu trữ báo cáo và báo cáo tóm tắt. Bạn có thể sử dụng lệnh CLI được cung cấp. Thay thế trường trong <> bằng các biến thích hợp.

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. Tạo khoá truy cập của người dùng

Tạo khoá truy cập của người dùng bằng hướng dẫn của AWS. Thao tác này sẽ dùng để gọi các điểm cuối API createJobgetJob được tạo trên AWS.

1.7.3. Quyền của người dùng và nhóm trên AWS

Để triển khai Dịch vụ tổng hợp trên AWS, bạn sẽ cần cấp một số quyền nhất định cho người dùng được dùng để triển khai dịch vụ này. Đối với Codelab này, hãy xác minh rằng người dùng có Quyền truy cập của quản trị viên để đảm bảo có đầy đủ quyền trong quá trình triển khai.

1.8. Terraform (Dịch vụ tổng hợp)

Lớp học lập trình này sử dụng Terraform để triển khai Dịch vụ tổng hợp. Xác minh rằng Terraform binary đã được cài đặt vào môi trường cục bộ của bạn.

Tải tệp nhị phân Terraform xuống môi trường cục bộ.

Sau khi tải tệp nhị phân Terraform xuống, hãy trích xuất tệp đó và di chuyển tệp nhị phân Terraform vào /usr/local/bin.

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

Kiểm tra để đảm bảo Terraform có sẵn trên đường dẫn lớp.

terraform -v

1.9. Postman (Đối với Dịch vụ tổng hợp AWS)

Trong Lớp học lập trình này, hãy sử dụng Postman để quản lý yêu cầu.

Tạo một không gian làm việc bằng cách chuyển đến mục điều hướng trên cùng "Không gian làm việc" rồi chọn "Tạo không gian làm việc".

không gian làm việc của Postman Không gian làm việc Postman

Chọn "Không gian làm việc trống", nhấp vào "Tiếp theo" rồi đặt tên là "Hộp cát về quyền riêng tư". Chọn "Cá nhân" rồi nhấp vào "Tạo".

Tải tệp cấu hình JSON và tệp Môi trường chung của không gian làm việc được định cấu hình sẵn xuống.

Nhập tệp JSON vào "Không gian làm việc của tôi" bằng nút "Nhập".

Nhập tệp JSON của Postman. Nhập tệp JSON của Postman.

Thao tác này sẽ tạo bộ sưu tập Hộp cát về quyền riêng tư cho bạn cùng với các yêu cầu HTTP createJobgetJob.

Bộ sưu tập đã nhập của Postman. Bộ sưu tập đã nhập của Postman.

Cập nhật "Khoá truy cập" và "Khoá bí mật" của AWS thông qua "Tổng quan nhanh về môi trường".

Xem nhanh môi trường Postman. Xem nhanh môi trường Postman.

Nhấp vào "Chỉnh sửa" rồi cập nhật "Giá trị hiện tại" của cả "access_key" và "secret_key". Xin lưu ý rằng frontend_api_id sẽ được cung cấp trong mục 3.1.4 của tài liệu này. Bạn nên sử dụng khu vực us-east-1. Tuy nhiên, nếu bạn muốn triển khai ở một khu vực khác, hãy xác minh rằng bạn sao chép AMI đã phát hành vào tài khoản của mình hoặc tự tạo bằng cách sử dụng tập lệnh được cung cấp.

Biến toàn cục của Postman. Biến chung của Postman. Chỉnh sửa biến toàn cục trong Postman. Postman edit global variables (Postman chỉnh sửa các biến toàn cục).

2. Lớp học lập trình Kiểm thử cục bộ

Bạn có thể sử dụng công cụ kiểm thử cục bộ trên máy để thực hiện quy trình tổng hợp và tạo báo cáo tóm tắt bằng cách sử dụng các báo cáo gỡ lỗi chưa mã hoá.

Các bước trong lớp học lập trình

Bước 2.1. Báo cáo điều kiện kích hoạt: Kích hoạt báo cáo Private Aggregation để có thể thu thập báo cáo.

Bước 2.2. Tạo báo cáo có thể tổng hợp để gỡ lỗi: Chuyển đổi báo cáo JSON đã thu thập thành báo cáo có định dạng AVRO.
Bước này sẽ tương tự như khi các công nghệ quảng cáo thu thập báo cáo từ các điểm cuối báo cáo API và chuyển đổi báo cáo JSON thành báo cáo có định dạng AVRO.

Bước 2.3. Phân tích khoá nhóm từ báo cáo gỡ lỗi: Khoá nhóm do công nghệ quảng cáo thiết kế. Trong lớp học lập trình này, vì các bộ chứa được xác định trước, hãy truy xuất các khoá bộ chứa như được cung cấp.

Bước 2.4. Tạo AVRO miền đầu ra: Sau khi truy xuất các khoá nhóm, hãy tạo tệp AVRO miền đầu ra.

Bước 2.5. Tạo báo cáo tóm tắt bằng Công cụ kiểm thử cục bộ: Sử dụng Công cụ kiểm thử cục bộ để có thể tạo Báo cáo tóm tắt trong Môi trường cục bộ.

Bước 2.6. Xem báo cáo tóm tắt: Xem báo cáo tóm tắt do Công cụ kiểm thử cục bộ tạo.

2.1. Báo cáo điều kiện kích hoạt

Truy cập vào trang web bản minh hoạ hộp cát về quyền riêng tư. Thao tác này sẽ kích hoạt một báo cáo tổng hợp riêng tư. Bạn có thể xem báo cáo tại chrome://private-aggregation-internals.

Các thành phần nội bộ của tính năng tổng hợp riêng tư trên Chrome. Các thành phần nội bộ của tính năng tổng hợp riêng tư trên Chrome.

Nếu báo cáo của bạn có trạng thái "Đang chờ xử lý", bạn có thể chọn báo cáo đó rồi nhấp vào "Gửi báo cáo đã chọn".

Gửi báo cáo tổng hợp riêng tư. Gửi báo cáo tổng hợp riêng tư.

2.2. Tạo báo cáo có thể tổng hợp để gỡ lỗi

Trong chrome://private-aggregation-internals, hãy sao chép "Nội dung báo cáo" nhận được trong điểm cuối [reporting-origin]/.well-known/private-aggregation/report-shared-storage.

Đảm bảo rằng trong "Nội dung báo cáo", aggregation_coordinator_origin chứa https://publickeyservice.msmt.aws.privacysandboxservices.com, tức là báo cáo này là báo cáo có thể tổng hợp của AWS.

Báo cáo tổng hợp riêng tư. Báo cáo tổng hợp riêng tư.

Đặt "Nội dung báo cáo" JSON vào một tệp JSON. Trong ví dụ này, bạn có thể sử dụng vim. Tuy nhiên, bạn có thể sử dụng bất kỳ trình chỉnh sửa văn bản nào bạn muốn.

vim report.json

Dán báo cáo vào report.json rồi lưu tệp.

Tệp JSON báo cáo. Tệp JSON báo cáo.

Sau khi có được thông tin đó, hãy chuyển đến thư mục báo cáo của bạn và sử dụng aggregatable_report_converter.jar để giúp tạo báo cáo gỡ lỗi có thể tổng hợp. Thao tác này sẽ tạo một báo cáo có thể tổng hợp có tên là report.avro trong thư mục hiện tại của bạn.

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

2.3. Phân tích khoá nhóm từ báo cáo gỡ lỗi

Dịch vụ tổng hợp yêu cầu 2 tệp khi xử lý hàng loạt. Báo cáo có thể tổng hợp và tệp miền đầu ra. Tệp miền đầu ra chứa các khoá mà bạn muốn truy xuất từ các báo cáo có thể tổng hợp. Để tạo tệp output_domain.avro, bạn cần có các khoá nhóm có thể truy xuất từ báo cáo.

Khoá nhóm do phương thức gọi API thiết kế và demo chứa các khoá nhóm mẫu được tạo sẵn. Vì bản minh hoạ đã bật chế độ gỡ lỗi cho tính năng Tổng hợp riêng tư, nên bạn có thể phân tích cú pháp tải trọng văn bản thuần tuý gỡ lỗi từ "Nội dung báo cáo" để truy xuất khoá nhóm. Tuy nhiên, trong trường hợp này, trang web bản minh hoạ hộp cát về quyền riêng tư sẽ tạo các khoá nhóm. Vì tính năng tổng hợp riêng tư cho trang web này đang ở chế độ gỡ lỗi, nên bạn có thể sử dụng debug_cleartext_payload từ "Nội dung báo cáo" để lấy khoá nhóm.

Sao chép debug_cleartext_payload từ nội dung báo cáo.

Gỡ lỗi tải trọng văn bản thô từ nội dung báo cáo. Gỡ lỗi tải trọng văn bản thô từ nội dung báo cáo.

Mở công cụ Trình gỡ lỗi tải trọng cho tính năng Tổng hợp riêng tư rồi dán debug_cleartext_payloadvào hộp "INPUT" (ĐẦU VÀO) rồi nhấp vào "Decode" (Giải mã).

Bộ giải mã trọng tải. Bộ giải mã trọng tải.

Trang này trả về giá trị thập phân của khoá nhóm. Sau đây là khoá nhóm mẫu.

Kết quả của bộ giải mã tải trọng. Kết quả của bộ giải mã tải trọng.

2.4. Tạo AVRO miền đầu ra

Giờ đây, khi đã có khoá nhóm, hãy sao chép giá trị thập phân của khoá nhóm. Tiến hành tạo output_domain.avro bằng khoá nhóm. Xác minh rằng bạn đã thay thế bằng khoá nhóm mà bạn truy xuất.

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

Tập lệnh này sẽ tạo tệp output_domain.avro trong thư mục hiện tại của bạn.

2.5. Tạo báo cáo tóm tắt bằng Công cụ kiểm thử cục bộ

Chúng ta sẽ sử dụng LocalTestingTool_{version}.jar đã tải xuống trong Phần 1.1 để tạo báo cáo tóm tắt. Sử dụng lệnh sau. Bạn nên thay thế LocalTestingTool_{version}.jar bằng phiên bản được tải xuống cho LocalTestingTool.

Chạy lệnh sau để tạo báo cáo tóm tắt trong môi trường phát triển cục bộ:

java -jar LocalTestingTool_{version}.jar \
--input_data_avro_file report.avro \
--domain_avro_file output_domain.avro \
--output_directory .

Sau khi chạy lệnh, bạn sẽ thấy nội dung tương tự như hình ảnh sau. Báo cáo output.avro sẽ được tạo sau khi quá trình này hoàn tất.

Tệp avro báo cáo tóm tắt kiểm thử cục bộ. Tệp avro chứa báo cáo tóm tắt kiểm thử cục bộ.

2.6. Xem báo cáo tóm tắt

Báo cáo tóm tắt được tạo ở định dạng AVRO. Để có thể đọc dữ liệu này, bạn cần chuyển đổi dữ liệu này từ AVRO sang định dạng JSON. Tốt nhất là công nghệ quảng cáo nên mã hoá để chuyển đổi báo cáo AVRO trở lại JSON.

Đối với Lớp học lập trình này, chúng ta sẽ dùng công cụ aggregatable_report_converter.jar được cung cấp để chuyển đổi báo cáo AVRO trở lại JSON.

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

Thao tác này sẽ trả về một báo cáo tương tự như hình ảnh sau. Cùng với báo cáo output.json được tạo trong cùng một thư mục.

Tệp avro tóm tắt được chuyển đổi sang json. Tệp avro tóm tắt được chuyển đổi sang json.

Mở tệp JSON trong trình chỉnh sửa mà bạn chọn để xem báo cáo tóm tắt.

3. Triển khai Dịch vụ tổng hợp

Để triển khai Dịch vụ tổng hợp, hãy làm theo các bước sau:

Bước 3. Triển khai Dịch vụ tổng hợp: Triển khai Dịch vụ tổng hợp trên AWS
Bước 3.1. Sao chép Kho lưu trữ Aggregation Service
Bước 3.2. Tải các phần phụ thuộc được tạo sẵn xuống
Bước 3.3. Tạo môi trường phát triển
Bước 3.4. Triển khai Dịch vụ tổng hợp

3.1. Sao chép kho lưu trữ Dịch vụ tổng hợp

Trong môi trường cục bộ, hãy sao chép kho lưu trữ Dịch vụ tổng hợp trên Github.

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

3.2. Tải các phần phụ thuộc được tạo sẵn xuống

Sau khi bạn sao chép kho lưu trữ Dịch vụ tổng hợp, hãy chuyển đến thư mục Terraform của kho lưu trữ và thư mục đám mây tương ứng. Nếu cloud_provider của bạn là AWS, bạn có thể chuyển sang bước /terraform/aws

cd <repository_root>/terraform/aws

Trong /terraform/aws, hãy thực thi download_prebuilt_dependencies.sh.

bash download_prebuilt_dependencies.sh

3.3. Tạo môi trường phát triển

Tạo một môi trường phát triển trong /terraform/aws/environments. Tạo một thư mục có tên là dev.

mkdir dev

Sao chép nội dung trong thư mục demo vào thư mục dev.

cp -R demo/* dev

Di chuyển vào thư mục dev.

cd dev

Cập nhật tệp main.tf rồi nhấn i để input chỉnh sửa tệp.

vim main.tf

Huỷ nhận xét mã trong hộp màu đỏ bằng cách xoá # và cập nhật tên của nhóm và khoá.

Đối với tệp main.tf của AWS:

Tệp tf chính của AWS. Tệp tf chính của AWS.

Mã không có chú thích sẽ có dạng như sau.

backend "s3" {
  bucket = "<tf_state_bucket_name>"
  key    = "<environment_name>.tfstate"
  region = "us-east-1"
}

Sau khi cập nhật xong, hãy lưu nội dung cập nhật và thoát khỏi trình chỉnh sửa bằng cách nhấn esc -> :wq!. Thao tác này sẽ lưu nội dung cập nhật vào ngày main.tf.

Tiếp theo, hãy đổi tên example.auto.tfvars thành dev.auto.tfvars.

mv example.auto.tfvars dev.auto.tfvars

Cập nhật dev.auto.tfvars rồi nhấn i cho input để chỉnh sửa tệp.

vim dev.auto.tfvars

Cập nhật các trường trong hộp màu đỏ theo hình ảnh bằng các tham số ARN chính xác của AWS được cung cấp trong quá trình tham gia Dịch vụ tổng hợp, môi trường và email thông báo.

Chỉnh sửa tệp tfvars tự động dành cho nhà phát triển. Chỉnh sửa tệp tfvars tự động của nhà phát triển.

Sau khi cập nhật xong, hãy nhấn vào esc -> :wq!. Thao tác này sẽ lưu tệp dev.auto.tfvars và tệp này sẽ có dạng như hình ảnh sau.

Đã cập nhật tệp dev auto tfvars. Đã cập nhật tệp tfvars tự động dành cho nhà phát triển.

3.4. Triển khai Dịch vụ tổng hợp

Để triển khai Dịch vụ tổng hợp, trong cùng một thư mục /terraform/aws/environments/dev, hãy khởi chạy Terraform.

terraform init

Thao tác này sẽ trả về kết quả tương tự như hình ảnh sau:

Terraform init. Terraform init.

Sau khi khởi chạy Terraform, hãy tạo kế hoạch thực thi Terraform. Trong đó, hàm này trả về số lượng tài nguyên cần thêm và các thông tin bổ sung khác tương tự như hình ảnh sau.

terraform plan

Bạn có thể xem phần tóm tắt "Kế hoạch" trong phần sau. Nếu đây là một quy trình triển khai mới, bạn sẽ thấy số lượng tài nguyên sẽ được thêm là 0, số lượng tài nguyên sẽ được thay đổi là 0 và số lượng tài nguyên sẽ bị hủy bỏ là 0.

Kế hoạch Terraform. Kế hoạch Terraform.

Sau khi hoàn tất bước này, bạn có thể tiếp tục áp dụng Terraform.

terraform apply

Khi được nhắc xác nhận thực hiện các thao tác bằng Terraform, hãy nhập yes vào giá trị.

Lời nhắc áp dụng Terraform. Lời nhắc áp dụng Terraform.

Sau khi terraform apply hoàn tất, các điểm cuối sau đây cho createJobgetJob sẽ được trả về. frontend_api_id mà bạn cần cập nhật trong Postman ở mục 1.9 cũng được trả về.

Đã hoàn tất việc áp dụng Terraform. Đã hoàn tất việc áp dụng Terraform.

4. Tạo dữ liệu đầu vào cho Dịch vụ tổng hợp

Tiến hành tạo báo cáo AVRO để xử lý hàng loạt trong Aggregation Service.

Bước 4. Tạo dữ liệu đầu vào cho Dịch vụ tổng hợp: Tạo các báo cáo của Dịch vụ tổng hợp được xử lý theo lô cho Dịch vụ tổng hợp.
Bước 4.1. Báo cáo về điều kiện kích hoạt
Bước 4.2. Thu thập báo cáo tổng hợp
Bước 4.3. Chuyển đổi báo cáo sang AVRO
Bước 4.4. Tạo AVRO miền đầu ra

4.1. Báo cáo điều kiện kích hoạt

Truy cập vào trang web bản minh hoạ Hộp cát về quyền riêng tư. Thao tác này sẽ kích hoạt một báo cáo tổng hợp riêng tư. Bạn có thể xem báo cáo tại chrome://private-aggregation-internals.

Các thành phần nội bộ của tính năng tổng hợp riêng tư trên Chrome. Các thành phần nội bộ của tính năng tổng hợp riêng tư trên Chrome.

Nếu báo cáo của bạn có trạng thái "Đang chờ xử lý", bạn có thể chọn báo cáo đó rồi nhấp vào "Gửi báo cáo đã chọn". '

Gửi báo cáo tổng hợp riêng tư. Gửi báo cáo tổng hợp riêng tư.

4.2. Thu thập báo cáo tổng hợp

Thu thập các báo cáo có thể tổng hợp từ các điểm cuối .well-known của API tương ứng.

  • Tổng hợp riêng tư
    [reporting-origin] /.well-known/private-aggregation/report-shared-storage
  • Báo cáo phân bổ – Báo cáo tóm tắt
    [reporting-origin] /.well-known/attribution-reporting/report-aggregate-attribution

Trong Lớp học lập trình này, bạn sẽ thực hiện việc tập hợp báo cáo theo cách thủ công. Trong quá trình sản xuất, các công nghệ quảng cáo dự kiến sẽ thu thập và chuyển đổi báo cáo theo phương thức lập trình.

Trong chrome://private-aggregation-internals, hãy sao chép "Nội dung báo cáo" nhận được trong điểm cuối [reporting-origin]/.well-known/private-aggregation/report-shared-storage.

Đảm bảo rằng trong "Nội dung báo cáo", aggregation_coordinator_origin chứa https://publickeyservice.msmt.aws.privacysandboxservices.com, tức là báo cáo này là báo cáo có thể tổng hợp của AWS.

Báo cáo tổng hợp riêng tư. Báo cáo tổng hợp riêng tư.

Đặt "Nội dung báo cáo" JSON vào một tệp JSON. Trong ví dụ này, bạn có thể sử dụng vim. Tuy nhiên, bạn có thể sử dụng bất kỳ trình chỉnh sửa văn bản nào bạn muốn.

vim report.json

Dán báo cáo vào report.json rồi lưu tệp.

Tệp JSON báo cáo. Tệp JSON báo cáo.

4.3. Chuyển đổi báo cáo sang AVRO

Báo cáo nhận được từ các điểm cuối .well-known có định dạng JSON và cần được chuyển đổi sang định dạng báo cáo AVRO. Sau khi bạn có báo cáo JSON, hãy chuyển đến thư mục báo cáo rồi dùng aggregatable_report_converter.jar để tạo báo cáo có thể tổng hợp gỡ lỗi. Thao tác này sẽ tạo một báo cáo có thể tổng hợp có tên là report.avro trong thư mục hiện tại của bạn.

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

4.4. Tạo AVRO miền đầu ra

Để tạo tệp output_domain.avro, bạn cần có các khoá nhóm có thể truy xuất từ báo cáo.

Khoá nhóm được thiết kế bởi công nghệ quảng cáo. Tuy nhiên, trong trường hợp này, trang web Bản minh hoạ Hộp cát về quyền riêng tư sẽ tạo khoá nhóm. Vì tính năng tổng hợp riêng tư cho trang web này đang ở chế độ gỡ lỗi, nên bạn có thể sử dụng debug_cleartext_payload từ "Nội dung báo cáo" để lấy khoá nhóm.

Bạn có thể sao chép debug_cleartext_payload từ nội dung báo cáo.

Gỡ lỗi tải trọng văn bản thô từ nội dung báo cáo. Gỡ lỗi tải trọng văn bản thô từ nội dung báo cáo.

Mở goo.gle/ags-payload-decoder rồi dán debug_cleartext_payloadvào hộp "INPUT" (ĐẦU VÀO) rồi nhấp vào "Decode" (Giải mã).

Bộ giải mã trọng tải. Bộ giải mã trọng tải.

Trang này trả về giá trị thập phân của khoá nhóm. Sau đây là khoá nhóm mẫu.

Kết quả của bộ giải mã tải trọng. Kết quả của bộ giải mã tải trọng.

Bây giờ chúng ta đã có khoá nhóm, hãy tiếp tục tạo output_domain.avro. Xác minh rằng bạn đã thay thế bằng khoá nhóm mà bạn truy xuất.

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

Tập lệnh này sẽ tạo tệp output_domain.avro trong thư mục hiện tại của bạn.

4.5. Di chuyển báo cáo sang vùng lưu trữ AWS

Sau khi tạo báo cáo AVRO (trong phần 3.2.3) và miền đầu ra (trong phần 3.2.4), hãy chuyển các báo cáo và miền đầu ra vào các vùng chứa S3 báo cáo.

Nếu bạn đã thiết lập AWS CLI trên môi trường cục bộ, hãy dùng các lệnh sau để sao chép báo cáo vào thư mục báo cáo và nhóm S3 tương ứng.

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. Mức sử dụng Dịch vụ tổng hợp

Trên terraform apply, bạn sẽ nhận được create_job_endpoint, get_job_endpointfrontend_api_id. Sao chép frontend_api_id và đặt mã này vào biến chung frontend_api_id của postman mà bạn đã thiết lập trong phần điều kiện tiên quyết 1.9.

Bước 5. Mức sử dụng Dịch vụ tổng hợp: Sử dụng Aggregation Service API để tạo báo cáo tóm tắt và xem xét báo cáo tóm tắt.
Bước 5.1. Sử dụng điểm cuối createJob để xử lý hàng loạt
Bước 5.2. Sử dụng điểm cuối getJob để truy xuất trạng thái của lô
Bước 5.3. Xem xét Báo cáo tóm tắt

5.1. Sử dụng điểm cuối createJob để xử lý theo lô

Trong Postman, hãy mở bộ sưu tập "Hộp cát về quyền riêng tư" rồi chọn "createJob".

Chọn "Body" (Nội dung) rồi chọn "raw" (thô) để đặt tải trọng yêu cầu.

nội dung yêu cầu createJob của postman nội dung yêu cầu createJob của postman

Giản đồ tải trọng createJob có trong github và có dạng như sau. Thay thế <> bằng các trường thích hợp.

{
    "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"
    }
}

Sau khi bạn nhấp vào "Gửi", hệ thống sẽ tạo công việc có job_request_id. Bạn sẽ nhận được phản hồi HTTP 202 sau khi Dịch vụ tổng hợp chấp nhận yêu cầu. Bạn có thể tìm thấy các mã trả về khác trong mã phản hồi HTTP

trạng thái yêu cầu postman createJob trạng thái yêu cầu createJob của postman

5.2. Sử dụng điểm cuối getJob để truy xuất trạng thái lô

Để kiểm tra trạng thái của yêu cầu công việc, bạn có thể sử dụng điểm cuối getJob. Chọn "getJob" trong bộ sưu tập "Privacy Sandbox".

Trong "Params", hãy cập nhật giá trị job_request_id thành job_request_id đã được gửi trong yêu cầu createJob.

yêu cầu postman getJob yêu cầu postman getJob

Kết quả của getJob sẽ trả về trạng thái của yêu cầu công việc với trạng thái HTTP là 200. "Nội dung" của yêu cầu chứa thông tin cần thiết như job_status, return_messageerror_messages (nếu công việc gặp lỗi).

trạng thái yêu cầu postman getJob trạng thái yêu cầu getJob của postman

Vì trang web báo cáo của báo cáo minh hoạ được tạo khác với trang web bạn đã tham gia trên mã nhận dạng AWS, nên bạn có thể nhận được phản hồi có PRIVACY_BUDGET_AUTHORIZATION_ERROR return_code. Đây là điều bình thường vì trang web có "nguồn báo cáo" của báo cáo không khớp với trang web báo cáo được tích hợp cho mã nhận dạng 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. Xem xét Báo cáo tóm tắt

Sau khi nhận được báo cáo tóm tắt trong S3 Bucket đầu ra, bạn có thể tải báo cáo này xuống môi trường cục bộ. Báo cáo tóm tắt ở định dạng AVRO và có thể được chuyển đổi lại thành JSON. Bạn có thể dùng aggregatable_report_converter.jar để đọc báo cáo bằng lệnh sau.

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

Thao tác này trả về một JSON gồm các giá trị tổng hợp của từng khoá nhóm trông tương tự như hình ảnh sau.

Báo cáo tóm tắt. Báo cáo tóm tắt.

Nếu yêu cầu createJob của bạn có debug_runtrue, thì bạn có thể nhận được báo cáo tóm tắt trong thư mục gỡ lỗi nằm trong output_data_blob_prefix. Báo cáo ở định dạng AVRO và có thể được chuyển đổi bằng lệnh trước đó thành JSON.

Báo cáo này chứa khoá nhóm, chỉ số chưa được làm nhiễu và nhiễu được thêm vào chỉ số chưa được làm nhiễu để tạo báo cáo tóm tắt. Báo cáo này có dạng tương tự như hình ảnh sau.

Báo cáo tóm tắt gỡ lỗi. Báo cáo tóm tắt gỡ lỗi.

Chú thích cũng chứa in_reportsin_domain, tức là:

  • in_reports – khoá nhóm có trong báo cáo có thể tổng hợp.
  • in_domain – khoá bộ chứa có trong tệp AVRO output_domain.